1.子类通过extends关键字继承父类
2.子类可以继承父类 非私有 属性
3.创建子类对象时,会默认调用父类的无参构造方法
4.在子类构造方法中,第一行默认有super();语句,该语句用于调用父类构造方法
5.使用super(值);调用父类中其他重载的构造方法
super关键字:
1.表示父类对象
2.使用super.属性访问父类中的属性
3.当子类中声明了和父类中同名的属性。使用super来区别
父类Animal类
//父类
public class Animal {
//父类里的属性,如果是被用来被子类继承,就不要使用private修饰
String name="动物";
String color;
int age;
double weight;
//无参构造方法
public Animal(){
}
public Animal(String name){
System.out.println("父类有参构造方法");
}
public void eat(){
System.out.println("eat");//父类的行为(成员方法)
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
子类Cat类
public class Cat extends Animal{
String name="猫";
//子类无参构造方法
public Cat(){
super();//默认有这一句话 调用父类构造方法
System.out.println("子类无参构造方法");//子类无参构造方法
}
public void test(){
System.out.println("访问当前类name:"+this.name);//访问当前类name:猫
System.out.println("访问父类中name:"+super.name);//访问父类中name:动物
//访问父类中的方法
super.eat();//eat
}
public static void main(String[] args) {
//创建Cat类对象
Cat c=new Cat();
c.test();
//c.weight=10;编译错误,无法继承父类私有属性
}
}
重写:
1.在子类里声明一个和父类相同的方法,并且可以重新定义方法体
2.子类会调用重写之后的方法,如果要调用父类中的方法,使用super.方法名();
父类Phone类
//手机类
public class Phone {
public void call(){
System.out.println("打电话");
}
}
子类SmartPhone类
public class SmartPhone extends Phone {
//重写父类call方法
@Override//该注解表示该方法是重写父类的方法,建议加上
public void call(){
super.call();//调用父类中的call方法打电话// 打电话
System.out.println("打视频电话");// 打视频电话
}
public static void main(String[] args) {
//创建子类对象
SmartPhone sp=new SmartPhone();
sp.call();
}
}