面向对象的三个基本特征是:封装、继承、多态
封装:获得get,set方法
其它:封装时会用到多个权限控制符来修饰成员变量和方法,下面看看它们的区别:
上面的这一张图片应该可以很好的诠释4个权限控制符的使用了
继承
修饰符 class SubClass extends SuperClass{
}
SubClass :导出类、继承类、子类
SuperClass:父类、基类、超类、源类
子类SubClass通过extends来继承父类SuperClass
每个类有且只有一个直接父类
Java只支持单继承不支持多继承
父类里面私有的东西,子类不能继承
overload 与 override
|
区别点
| 重载(overload) |
重写(override)
|
1
|
判断规则
|
参数列表顺序不同、类型不同、个数不同都可以构成重载
同类中方法名相同,但是方法的参数列表不同,与方法的返回值类型和修饰符无关
|
方法签名(方法名+参数列表)必须相同
子类方法的返回值类型比父类方法的返回值类型更小或相等
子类方法声明抛出的异常应比父类方法申明跑出异常更小或相等
子类方法的访问权限应比父类方法更大或相等
|
2
| 权限 |
无权限要求
|
被重写的方法不能拥有比父类更严格的权限
|
3
|
范围
|
发生在一个类中
|
发生在继承关系中
|
4 |
多态
|
编译时多态
|
运行时多态
|
构造方法不能被重写
多态
多态
public class test {
public static void main(String[] args) {
cat c = new cat();
c.jiao();
dog d = new dog();
d.jiao();
Animal a=new cat();
a.jiao();
}
}
class Animal {
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int age;
public String name;
public void jiao() {
System.out.println("谁在叫");
}
}
class cat extends Animal {
public void jiao() {
System.out.println("猫在叫");
}
}
class dog extends Animal {
public void jiao() {
System.out.println("狗在叫");
}
}