Java小白学习心得(三)

纵然是瞬间 提交于 2020-03-17 06:32:30

前言:学习就是一个动心忍性增益起所不能的过程
本文主要讨论Java的继承性与多态性

https://www.cnblogs.com/xiaozhaoboke/p/11038893.html

接口

通用性、隔离性
面向接口编程:如果使用的功能接口足够满足,则不在乎具体的类而使用接口

public interface Animal{
	void eat();
}

组成:
1.抽象方法
2.常量
3.默认方法
4.静态方法
5.私有方法(java9)

抽象方法
1.public abstract
2.public abstract可省略不写
3.只有方法头,没有方法体

实现类

public class ImplementationClass implements Interface{
	//覆盖重写所有抽象方法
}

public class Dog implements Animal{
	public void eat(){  //需要补上public
		System.out.println("eat");
	}
}

覆盖重写(Override)抽象方法:
1.将接口中抽象方法抄写过来
2.去掉abstract
3.写上方法体

接口名 引用名=new 实现类名();
引用名.抽象方法名(参数);

	Animal sweetie=new Dog();
	sweetie.eat();

1.接口隔离:左边是接口类型,只能调用接口中定义好的内容,不能调用实现类特有内容
2.调用接口中抽象方法时,调用右侧实现类的具体方法内容

继承

继承主要解决的问题:共性抽取
子类可以拥有父类的内容,还可以拥有自己特有内容

public class 父类名称{
}
public class 子类名称 extends 父类名称{
}

public class Animal{
	public void eat(){
		System.out.println("eat");
	}
}
public class Dog extends Animal{
	int age=20;
}

Dog sweetie=new Dog();
sweetie.eat();

父子类继承关系中,若成员变量重名:
1.直接访问:等号左边是谁,就优先取谁,没有则向上找
2.通过成员方法访问:方法属于谁,优先用谁,没有则向上找

父子类构造方法访问特点:
1.子类构造方法中,默认隐含“super()”调用——先调用父类构造,后执行子类构造
2.super的父类构造调用,必须是子类构造方法的第一个语句且只能调用一个

super关键字用法:
1.在子类成员方法中访问父类成员变量
2.在子类成员方法中访问父类成员方法
3.在子类构造方法中访问父类构造方法

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!