Java面向对象(三)
Java面向对象(三)
1.继承
概括:继承是指在现有类的基础上构建一个新类,构建出的新类称为子类,现有类称为父类或基类,子类将自动获得父类可继承的所有方法和属性。程序中可用extends关键字完成类之间的继承。
举例:
class Animal{
String name;
void shout(){
System.out.println("动物发出叫声");
}
}
class Dog extends Animal{
void printName(){
System.out.println("我叫"+name);
}
}
public class Page105 {
public static void main(String[] args) {
Dog dog=new Dog();
dog.name="小贝";
dog.printName();
dog.shout();
}
}
注意:
- Java中类只支持单继承,不支持多重继承,一个类只能有一个直接父类
- 多个类可以继承同一个父类
- 多层继承是可以的,一个类的父类可以是另一个类的子类
- 当一个类没有指定其父类,默认继承Object类
2.重写父类方法
概括:在子类中对继承来的父类方法进行修改。
举例:
class Animal{
String name;
void shout(){
System.out.println("动物发出叫声");
}
}
class Cat extends Animal{
void shout(){
System.out.println("喵喵~");
}
}
public class Page106 {
public static void main(String[] args) {
Cat cat=new Cat();
cat.shout();
}
}
注意:
- 子类重写父类方法时不能使用比父类中该方法跟严格的访问权限,如父类中该方法用public修饰,子类就不能用private
3.super关键字
-
用super关键字调用父类成员变量和成员方法
举例:
class Animal1{ String name="动物"; void shout(){ System.out.println("动物发出叫声"); } } class Dog1 extends Animal1{ String name="狗"; void shout(){ super.shout(); } void printName(){ System.out.println("我叫"+super.name); } } public class Page107 { public static void main(String[] args) { Dog1 dog=new Dog1(); dog.shout(); dog.printName(); } }
-
用super关键字调用父类构造方法
举例:
class Animal2{ public Animal2(String name){ System.out.println("我是一只"+name); } } class Dog2 extends Animal2{ public Dog2(){ super("傻狗"); } } public class Page108 { public static void main(String[] args) { Dog2 doa=new Dog2(); } }
注意:
- super调用父类构造方法的代码必须位于子类构造方法的第一行且只能出现一次
4.final关键字
概括:final关键字用于修饰类、变量和方法,它有不可更改的含义。
特点:
- final修饰的类不能被继承
- final修饰的方法不能被子类重写
- final修饰的变量(成员或局部)是常量,只能赋值一次
注意:
- 局部变量使用final修饰时,可以声明变量的同时进行赋值,也可以先声明后赋值,但成员变量必须在声明变量的同时进行初始化赋值