面向对象之封装
面向对象的封装性指的是:
1. 属性私有化
2. 对外提供公开的setter和getter
Public classCustomer{
private int age;//private修饰的数据只能在本类中访问
public voidsetAge(int _age){
//安全控制
if (_age<0||_age>100){
system.out.prntln(“年龄不合法”);
return;
}
age=_age;
}
public intgetAge(){//成员方法,实例方法,非静态方法
//成员方法必须使用”引用.”的方式访问。
return age;
}
面向对象之继承
引入类继承最基本的作用:代码重用
语法:[修饰符列表]class子类名 extends父类名{
类体}
注意:1. Java语言中,类与类之间只支持单继承
2.如果没有显示的继承其他类,则该类默认继承object,object是sun提供的Java中的根类
3.Java语言中,子类继承父类,会将弗雷的所有数据继承,包括私有的也能继承过来,但是在子类中无法直接访问父类中的私有数据,可以
间接访问;
4.构造方法无法被子类继承
Public class superClass(){
public void m1(){
System.out.println(“m1…”);
Public void m2(){
System.out.println(“m2…”);
}
Public class Subextends superClass{
Public void m3(){
System.out.println(“m3…”);
Public classTest01{
Public static voidmain(string[] args){
Sub s=new Sub();
s.m1();
s.m2();
s.m3();
}
面向对象特性之多态
无论向上还是向下转型,两个类之间必须是继承关系
关于Java语言中的向上转型和向下转型
1. 向上转型(upcasting):子—>父,其又被称为自动类型转换,父类型的应用指向子类型对象
程序分为两个阶段:编译阶段和运行阶段
程序编译阶段只知道al是一个Animal类型,运行时堆中的实际对象是cat类型;
Animal al= new cat();
程序在编译阶段al被编译看作是Animal类型,所以程序在编译阶段a1引用绑定的是Animal类种的eat方法(静态绑定),
程序在运行的时候堆中的对象实际是cat类型,而cat 重写了eat方法,所以在运行阶段对象的绑定的方法是cat 中的eat方法(动态绑定)
al.eat();//猫吃鱼
2. 向下转型(downcasting):父—>子,强制类型转换,存在风险
Animal a2=new Cat();
强制类型转换,需要加强制类转换符
Cat c1= (cat) a2;
c1.move();
3. 尽量不要面向具体编程,面向父类编程,面向抽象编程
多态的作用:1.使用多态可以使代码之前的耦合度降低;
2.项目的拓展能力增强;