封装.继承.多态
封装
1.封装:隐藏类内部细节
2.封装 步骤:
第一步:将属性私有化.(private)
第二步:提供getter/setter方法(getXxxx(),setXxxx()).
第三步:在getter/setter中加入控制语句.
3. this关键词
this:表示当前对象.
调用属性:this.属性名
调用方法:this.方法名();
this():表示调用构造函数.
注意:this(),必需写在构造函数的第一行.
继承(extends)
1. 继承:遗传
2. 语法
public class 子类 extends 父类{
//代码块
}
例:public class Dog extends Pet {
//代码块
}
3. 继承的特点
a.子类可以继承父类的非私有的属性和方法
b.不能继承构造方法
c.继承默认权限修饰符的方法和属性,子类和父类必需在同一包中
4. super(父类)
super.属性名; //表示访问父类的属性
super.方法名(参数); //表示访问父类的方法
super(参数);//表示访问父类的构造函数;
注意:super()访问父类构造函数时,必需写在第一行;
多态
1. 多态含义:一个事物的多种形态
2. 多态的表现
行为(方法)多态:重写和重载.
引用多态(动态绑定):编译时的类型和运行时不一致的这种现象叫做动态绑定.
例:父类 = 子类.
pet p = new Dog();
3.向上转型和向下转型
向上转型:父类 = 子类;
向下转型:子类 = (子类)父类;
例:Dog d = Dog()p;
注意:java.lang.ClassCastException:类型转换异常.
父类的运行时类型跟要转成的子类的类型不一致
注意:引用多态存在继承关系
instanceof
语法:对象A instanceof 类型B;
判断对象A的类型是否是类型B,如果是就返回true,否则返回false.
例:d instanceof Dog
实现多态的两种形式
a.使用父类作为方法形参实现多态
public void play(Pet p){}
b.使用父类作为方法返回值实现多态
public Pet getPet(int type){}