注册 登录
编程论坛 JAVA论坛

JAVA封装

_c_c 发布于 2015-05-03 23:12, 1122 次点击
public class PlaneTicket {
    public int way01(){

    }
    public static void way02(){
        
    }
    public static void main(String[] args){
        PlaneTicket p=new PlaneTicket();
        p.way01();
        way02();
    }
   
}
----------------------------------------------------------------
way01和way02这两个方法这样是否是封装?如果不是该怎么封装?本人对封装怎么用,怎么调感觉好混乱啊!求教育!
17 回复
#2
_c_c2015-05-03 23:18
在线等哦!求老手教育!
#3
_c_c2015-05-03 23:22
是否要把private变量生成set get方法?
#4
林月儿2015-05-03 23:25
public class PlaneTicket {
 public static void main(String[] args){
Ticket p=new Ticket();
p.setPrice(12);
System.out.print(p.getPrice());
}

}
class Ticket{
private double price;
public double getPrice(){
return this.price;
}
public void setPrice(double price){
this.price=price;
}
 }
#5
_c_c2015-05-03 23:36
版主大佬,是封装都要用到set get这两个语句么?
#6
_c_c2015-05-03 23:38
class Ticket{}能否可以加入Scanner语句?
#7
林月儿2015-05-03 23:46
setter getter 公有方法和私有属性体现的就是封装思想,不是说非要这两种方法,而是说对对象属性的处理通过这样的设置就有了相应的规范,起到保护作用。当然代码不多说了也没说服力。
#8
_c_c2015-05-03 23:48
public class PlaneTicket {
    private int number,price;
    public int getNumber() {
        return number;
    }
    public void setNumber(int number) {
        this.number = number;
    }
    public int getPrice() {
        return price*number;
    }
    public void setPrice(int price) {
        this.price = price;
    }

    public static void main(String[] args){
        int n=0;
        PlaneTicket p=new PlaneTicket();
        p.setPrice(1000);
        System.out.println("请输入需要购买的张数:");
        Scanner scanner=new Scanner(System.in);
        n=scanner.nextInt();
        p.setNumber(n);
        System.out.println(p.getPrice());
    }   
}
==============================================================================
就如这个,怎么把Scanner语句和Price赋值1000;而不用在main方法上set值了
#9
林月儿2015-05-03 23:57
我也是醉了,本类里即使私有也可以直接访问…还有,Scanner那部分代码应该会报错,要么改要么类型强转…还有就是你在一个类里面谈封装,额,我先睡了…
#10
_c_c2015-05-03 23:58
知道,打在一起好复制
,别谁!版主大佬
#11
_c_c2015-05-03 23:59
Scanner没报错好不?
#12
林月儿2015-05-04 00:03
可我是sql班主,学的c,java是自学的,只是来凑热闹…楼主问题解决了就结贴吧
#13
_c_c2015-05-04 00:05
你还没说如果Way01(){}在另一个class01上,再在class02上调用,这是封装么?
#14
林月儿2015-05-04 00:10
…这不是封装,你赢了
#15
_c_c2015-05-04 00:11
噢噢!怎么结贴?
#16
_c_c2015-05-04 00:24
import java.util.Scanner;

public class PlaneTicket {

    public static void main(String[] args){
        int n=0;
        PlaneNumber p=new PlaneNumber();
        Discount d=new Discount();
        p.setPrice(1000);
        System.out.println("请输入需要购买的张数:");
        Scanner scanner=new Scanner(System.in);
        n=scanner.nextInt();
        p.setNumber(n);
        System.out.println(p.getPrice()*d.way());
        
    }
   
}
--------------------------------------------------------------------
import java.util.Scanner;

public class PlaneNumber {
    private int number,price;
    public int getNumber() {
        return number;
    }
    public void setNumber(int number) {
        this.number = number;
    }
    public int getPrice() {
        return price*number;
    }
    public void setPrice(int price) {
        this.price = price;
    }

}
--------------------------------------------------
public class Discount {
    public double way(){
        double dis=0.0;
        PlaneNumber p=new PlaneNumber();
        if(p.getNumber()>20){
            dis=0.7;
        }else if(p.getNumber()>=11){
            dis=0.8;
        }else{
            dis=0.9;
        }
        return dis;
    }
}
---------------------------------------------------------
最后在林版主的帮助下勉强做出来了,谢谢林大版主这么晚也不睡来教育我!
#17
林月儿2015-05-04 10:07
回复 16楼 _c_c
跟我没关系,要是我改就会是这样
import java.util.Scanner;

public class PlaneTicket {

    public static void main(String[] args){
        int n=0;
        PlaneNumber p=new PlaneNumber();
        Discount d=new Discount();
        p.setPrice(1000);
        System.out.println("请输入需要购买的张数:");
        Scanner scanner=new Scanner(System.in);
        n=scanner.nextInt();
        p.setNumber(n);
        System.out.println(p.getPrice()*d.way(p));
        
    }
   
}
 class PlaneNumber {
    private int number,price;
    public int getNumber() {
        return number;
    }
    public void setNumber(int number) {
        this.number = number;
    }
    public int getPrice() {
        return price*number;
    }
    public void setPrice(int price) {
        this.price = price;
    }

}

 class Discount {
     double dis=0.0;
    public double way(PlaneNumber p){
        if(p.getNumber()>20){
            dis=0.7;
        }else if(p.getNumber()>=11){
            dis=0.8;
        }else{
            dis=0.9;
        }
        return dis;
    }
}
楼主你是太谦虚了
#18
_c_c2015-05-05 08:51
回复 17楼 林月儿
····没啥多大区别,只是class属性改下而已,Scanner语句能放在class PlaneNumber上么?
1