class Rect{ int width=2, height=6; void setWidth(int width){ this.width=width; //代码1 将参数的值赋给成员变量width } void setHeight(int height){ this.height=height; //代码2 将参数的值赋给成员变量height } int getArea(){ return width*height; } } public class E{ public static void main(String[] args) { Rect rect=new Rect(); rect.setWidth(5); rect.setHeight(6); System.out.println(rect.getArea()); } }
运行结果为30
//如果去掉this,则结果为12; ??这是疑惑??
javaBean
javaBean:可以重复使用的软件组件。javaBean是一个java类,通过封装方法和属性,成为了具有某种功能或处理某种业务的对象,简称Bean。
特点:有点像设计模式的概念,可以重复利用,易维护,跨平台。
说明:为了让用这个Bean的应用程序构建工具知道Bean的属性和方法,只需在类的方法上遵守如下规则就行。
1.为这个类提供一个无参的共有的构造方法。
2.把所有的属性定义为私有的。
3.为每个属性提供共有getter(获得属性值)和setter(修改值)的方法。
/*定义一个javaBean*/ public class JavaBeanTest{ private String name; private String age; public JavaBeanTest(){ //不带参数的构造方法 } //每个属性公有的setter和setter方法 public String getName(){ return name; } public void setName(String name){ this.name=name; } public int getAge(){ return age; } public void setAge(int age){ this.age=age; } }
是先设置set方法还是get方法?有区别?有讲究没有?这是没有讲究的
为什么set方法中有参数和数据类型?而get方法无参数?
类的继承:在现有类的基础上构建子类,可以延伸,还可以覆盖,还可
以向上或向下转型。
class Employee{ private String name; private int age; private double salary=3000;//Employee类的成员属性的设置 public Employee(String name, int age, double salary){ this.name=name; this.age=age; this.salary=salary;//构造器的参数设置,方便于参数的传递,把形参的值传给成员变量 } public Employee(){ }//为什么要空的构造器?这个代码应该可以省略 public double getSalary(){ return salary; } public double getMothlyIncome(){ return salary;//获得值 } } class Manager extends Employee{ private double bonus=1500; public Manager(){ } //设置子类特有的方法 public void setBonus(double bouns){ this.bonus=bonus;//设置奖金 } public double getBonus(){ return bonus;//获取并返回奖金 } } public class InheritanceTest{ public static void main(String[] args) { Manager manager=new Manager(); double sal=manager.getSalary(); System.out.println("经理的月薪为"+sal); System.out.println("经理的奖金为"+manager.getBonus()); } }
/*说明:
1.子类只能获取父类非私有的
2.子类不拥有父类的构造器
3.父类不拥有子类所特有的属性和方法
*/
继承的优点:
1.可以创建更多的特殊类型 2.提高代码的重用性 3.易于后期维护
使用继承的规则:
1.满足is-a关系,而组合满足has-a( 找个例子!!)
2.把通用的属性和操作发到超类中
3.除非使用的方法有意义,否则不使用继承。
组合是指在新的类中创建原有类的对象,重复利用已有类的功能。
比如汽车是交通工具的一种,则是继承。一个汽车有多个轮胎,则是组合。
class Verhicle{ } class Car extends Verhicle{ } //继承 class Tire{ } class Car extends Verhicle{ private Tire t=new Tire; } //组合
在java中组合用的比继承多(接口和组合的方式比用继承有更好的可扩展性)
super关键字
作用:通过子类调用父类的构造方法,就用到super关键字,特别是父类私有的,还有被覆盖的情况下(明天找个例子)。
语法格式:super(参数值列表)
public Manager extends Employee{
private double blnus=1500;
public Manager(String name,int age,double salary,double bouns){
super(name,age,salary);
this.bonus=bonus;
}
public void setBounds(double blnus){
this.bouns=bouns;
}
public void getBounds(){
return bonus;
}
}
}