Java学习日记之12——继承与抽象类

继承与抽象类

  • 继承
    • 继承概述
    • 继承的特点
      • 继承中成员变量的特点
      • 继承中成员方法的特点
        • 方法重写时的注意点
      • 继承中构造方法的特点
  • 抽象类
    • 抽象类概述
    • 抽象类的特点
      • 抽象类的成员特点

继承

继承概述

当我们要编写类的时候,常常会出现很多相同的成员变量和方法,我们可以抽取出他们的共性,形成一个父类,在编写其他类的时候,继承该类,即可时候其中的成员变量和成员方法,这样的操作方法称为继承。

继承使用关键字extends表示,在类的后面继承父类即可,如:
Class cat extends animal{}

继承的特点

1.一个类只能继承一个父类,
2.父类也可以继承其他的类,即父类也可以有自己的父类,

class creature{}
class animals extends creature{}
class cat extends animals{}

继承中成员变量的特点

1.子类不能继承父类中私有的成员变量
2.子类中有与父类相同的成员变量时,默认使用父类的成员变量
3.子类成员方法中有局部变量时,默认使用局部变量。(就近原则)
4.若要使用父类的成员变量,需要使用super关键字,使用子类的成员变量时,使用this关键字。

class animals{
	String name = "狗";
}
class cat extends animals{
	String name = "猫";
	public void show(){
		String name = "小猫";
		System.out.println(super.name);
		System.out.println(this.name);
		System.out.println(name);
	}
}
输出结果:
狗
猫
小猫

继承中成员方法的特点

1.若子类中有与父类中重名的方法,称为方法的重写,若要调用父类的方法,要使用super关键字。

class animals{
	public void eat(){
		System.out.println("吃饭");
	}
}
class cat extends animals{
	public void eat(){
		super.eat();
		System.out.println("猫吃饭");
		}	
}
调用eat方法输出结果:
吃饭
猫吃饭

方法重写时的注意点

1.父类私有的方法无法使用
2.子类方法重写的权限等级要高于父类的方法等级

继承中构造方法的特点

1.若创建的子类继承了父类,则在创建子类对象之间,内存首先会创建父类对象,因此会执行父类的构造方法。
2.若无特殊说明,则执行的父类构造方法为无参构造,若要构造父类有参构造,需要在子类构造方法第一行使用 superi(参数列表)进行构造。

class animals{
	public animals(){
		System.out.println("我是父类无参构造");
	}
	public animals(int i ){
			System.out.println("我是父类有参构造");
	}
}

class cats extends animals{
	public cats(){
		super(1);//使用父类有参构造
		System.out.println("我是子类无参构造");
	}
	public cats(int i ){
		System.out.println("我是子类有参构造");
	}
}
创建子类无参构造时,输出结果
我是父类有参构造
我是子类无参构造

创建子类有参构造时,输出结果
我是父类无参构造
我是子类有参构造

抽象类

抽象类概述

抽象类是用于类与方法,使用关键字abstract修饰
若干类中有相似但是不是相同的方法,则可以抽取相同的部分,形成抽象方法,再构建一个抽象类为父类。

abstrct class aninamls{
	public void abstract eat();
}
class cats extends animals{
		@override //重写注解
		public void eat(){
			System.out.println("猫吃饭");
	}	
}

抽象类的特点

抽象方法只能用于抽象类中,普通类不能使用
抽象类不能创建对象
抽象类中可以有非抽象方法,但不能直接调用,需要被继承以后调用

抽象类的成员特点

成员变量:可以被调用,可以有常量,可以被子类继承
成员方法:需要重写
构造方法:可以有构造方法,构造方法的作用是给成员变量初始化
final:把变量变为常量的关键字

你可能感兴趣的:(JAVA)