飞道的博客

Java的继承,接口和抽象类

551人阅读  评论(0)

继承

物以类聚,世间万物皆对象,对象也可以分成若干类别

• 类别内的对象属性方法都具有一定的共同点。

子类和父类

Man extends Human 表示Man继承于Human
Human是父类,Man是子类

子类继承父类所有的属性和方法(但不能直接访问private成员)
• 根据信息隐藏原则:子类会继承父类所有的方法。可以直接
使用。

构造器

每个Java类都必须有构造函数

如果没有显式定义构造函数,Java编译器自动为该
产生一个空的无形参构造函数。

每个子类的构造函数的第一句话,都默认调用父类的无参数构造函数super(),除非子类的构造函数第一句话是super,而且super语句必须放在第一条,不会出现连续两条super语句。

父类Item的构造器

	public Item(String title,  int playingtime, boolean gotIt,String comment) {//Item的构造器,初始化成员变量;
		super();
		this.title = title;
		this.gotIt=gotIt;
		this.playingtime = playingtime;
		this.comment = comment;
	}

子类CD的构造器

public CD(String title, String artist, int playingtime, String comment,int numOftrack) {//CD的构造器
		super(title,  playingtime,false, comment);//传给父类Item去初始化
		this.numOftrack=numOftrack;
		this.artist=artist;
	}
	

如果子类第一句话没有super,
子类构造函数默认第一句话都会去调用父类的构造函数

抽象类

如果一个类暂时有方法未实现,需要被定义为抽象类

抽象类关键字abstract声明
• 抽象类的组成
–(optional)成员变量,个数不限
–(optional)具体方法,方法有实现,个数不限
–(optional)抽象方法,加abstract关键字,个数不限

public abstract class Shape {
	
	public abstract void draw(Graphics g);
	
}

子类可以继承于抽象类,但是一定要实现父类们所有abstract的方法。如果不能完全实现,那么子类也必须被定义为抽象类。

接口

如果类的所有方法都没有实现,那么这个类就算是接口
interface。

类只可以继承(extends)一个类,但是可以实现(implements)多
个接口,继承和实现可以同时。

类实现接口,就必须实现所有未实现的方法。如果没有全
部实现,那么只能成为一个抽象类。

抽象类和接口相同点:两者都不能被实例化,不能new操作

public interface climbTree{
     public void climb();
     }
public class cat implements climbTree{
      
      }

造型

子类可以转换成父类,而父类不可以转为子类。

子类继承父类所有的财产,子类可以变成父类(从大变小,即向
上造型)

子类继承父类的所有方法,但子类可以重新定义一个名字、参数和父类一样的方法,这种行为就是重写(覆写,覆盖,override, not overload(重载))。

子类的方法的优先级高于父类的,比如Man是父类,Human是子类,则可以

     Man a=new Human();

而此时就是想上造型,当对象a想调用函数时,必须只能调用父类与子类共有的,比如Man有个print函数,Human也重写了print函数,但是Human还有一个write函数,此时a.write();是错误的,而
a.print();调用的是Human的print()函数

多态

多态:子类转型为父类后,调用普通方法,依旧是子类的
方法。

多态的作用
–以统一的接口来操纵某一类中不同的对象的动态行为
–对象之间的解耦

接口与抽象类不同点

–抽象类abstract, 接口interface
–抽象类可以有部分方法实现,接口所有方法不能有实现
–一个类只能继承(extends)一个(抽象)类,实现(implements)多个接口
–接口可以继承(extends)多个接口
–抽象类有构造函数,接口没有构造函数
–抽象类可以有main,也能运行,接口没有main函数
–抽象类方法可以有private/protected, 接口方法都是public


转载:https://blog.csdn.net/weixin_43372187/article/details/105509287
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场