一.继承
1.如何使用继承
2.子类访问父类成员
3.访问修饰符总结
4.多重继承关系的初始化顺序
5.何时使用继承
6. 重写
7.抽象类
8.final用法
9. Object类
10. 内部类
一.继承
1.如何使用继承
编写父类
classPet {//公共的属性和方法
}
编写子类,继承父类
class Dog extendsPet {//子类特有的属性和方法
}
只能继承一个父类
2.子类访问父类成员
访问父类构造方法: 使用super关键字,super代表父类对象,在子类的构造方法中调用,且必须是第一句
super();super(name);
访问父类属性
super.name;
访问父类方法
super.print();
super关键字来访问父类的成员
super只能出现在子类的方法和构造方法中
super调用构造方法时,只能是第一句
super不能访问父类的private成员
子类能访问父类的所有资源吗?
不能被继承的父类成员:
private成员
子类与父类不在同包,使用默认访问权限的成员
构造方法
3.访问修饰符总结
private : 本类
默认(friendly) : 本类, 同包
protected : 本类,同包,子类
public : 本类,同包,子类, 其他
4.多重继承关系的初始化顺序
父类属性 - > 父类构造方法 - > 子类属性 -> 子类构造方法
5.何时使用继承
当符合is-a关系时
继承是代码重用的一种方式:
将子类共有的属性和行为放到父类
6. 重写
构造方法会被重写吗?
不能被继承,因此不能重写。
方法重写的规则?
方法名相同
参数列表相同
返回值类型相同或者是其子类
访问权限不能严于父类
方法重载和方法重写
7.抽象类
abstract 关键字
可以用于类,也可以用于方法。
抽象方法没有方法体
抽象方法必须在抽象类里
抽象方法必须在子类中被实现,除非子类是抽象类
8.final用法
final 用于类:表示类不能被其他类继承
public final class Penguin extendsPet {//…
}
用于方法:表示方法不能被重写
public final voidprint () {//…
}
用于属性:表示属性值不能被修改
public classPenguin {final String home ="南极";//居住地
public voidsetHome(String name){this.home=home; //错误,不可再赋值
}
}
使用final修饰引用型变量,变量的值是固定不变的, 而变量所指向的对象的属性值是可变的
9. Object类
Object类是所有类的父类
一个类如果没有使用extends显示的继承另外一个类, 那么这个类就继承自Object类。
Object类的主要方法
(1)toString()方法
(2)equals()方法
10. 内部类
把一个类定义在另一个类的内部称为内部类
package cn.bjsxt.demo;//声明包
class Outer//声明类
{private String info="hello World";//声明私有属性
class Inner//声明类
{public void print(){//打印输出的方法
System.out.println(info);
}
}public void fun(){//定义方法
new Inner().print();//通过内部类调用方法
}
}public class TestOuterAndInner2//测试类
{public static voidmain(String [] args){new Outer().fun();//调用方法
}
}