网站首页 > java教程 正文
继承就是子类继承父类的特征和行为,使得子类对象拥有父类的实力和方法。有了继承,资源可以得到复用,提升开发效率。为了简约,Java只支持单继承。继承需要符合的关系是:is-a,父类通用,子类具体。
如果一个类没有指明父类,默认继承于 java.lang.Object类。继承类用extends关键字,继承接口用implements关键字。如果不想被继承,使用final关键字声明即可。
21.1 类的继承
在Java中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类。类的继承用extends关键字。狗类继承动物类,就用父类的名称、编号和吃的方法。
public class Animal {
//动物名称
protected String name;
//编号
protected int num;
public Animal(String name, int num) {
this.name = name;
this.num = num;
System.out.println(name+"的编号:"+num);
}
public void eat() {
System.out.println(this.name+"吃什么?");
}
}
子类调用父类,复用父类的属性和方法。我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类,用this关键字指向自己的引用。
public class Dog extends Animal {
public Dog() {
super("狗", 123456);
}
public static void main(String[] args) {
Dog dog = new Dog();
}
}
输出结果
狗的编号:123456
21.2 接口继承
接口,在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口用interface关键字声明。接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。接口中定义的变量只能是public static final类型,并且默认即为public static final类型
类描述对象的属性和方法,接口则包含子类要实现的方法。接口不能用于实例化对象,没有构造方法,所有的方法都是抽象方法,接口支持多继承。接口继承接口也是用extends,类实现接口用implements关键字。
//Plant.java文件,接口:Plant(植物)
public interface Plant {
public void grow();
public void conserve();
}
//Classify.java文件,接口:Classify(类别)
public interface Classify {
public void setType(String name);
}
//Flower.java文件,同时继承Plant和Classify
public interface Flower extends Plant, Classify {
}
来个玫瑰花类实现Flower接口。一般开发工具都会提醒你要实现Flower接口里的内容。你可能会好奇接口Flower里可是什么都没有啊,要实现什么。Flower是没有,可它的父类Plant和Classify有要实现的方法。实现父类方法用@Override指定。
public class Rose implements Flower {
@Override
public void setType(String name) {
System.out.println(name);
}
@Override
public void grow() {
System.out.println("若想花长得好,多晒晒太阳," +
"不是让你多晒太阳,而是让花多晒太阳。");
}
@Override
public void conserve() {
System.out.println("花的世界需要做好相关保护错失,不要乱踩。");
}
public static void main(String[] args) {
Rose rose = new Rose();
rose.setType("玫瑰花");
rose.grow();
rose.conserve();
}
}
输出结果
玫瑰花
若想花长得好,多晒晒太阳,不是让你多晒太阳,而是让花多晒太阳。
花的世界需要做好相关保护错失,不要乱踩。
21.3 抽象类
在上一节用接口时,你会发现,接口里的方法声明都是public,不能有构造方法,没有普通成员变量。如果你既想要实现类似接口的功能,又想要控制权限或声明成员变量,那你就用抽象类。
抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。抽象类用abstract声明。
public abstract class Employee {
//姓名
protected String name;
//年龄
protected int age;
//入职日期
protected int entryDate;
//计算年假
public abstract double computeYear();
}
如果一个类包含抽象方法,那么该类必须是抽象类。任何子类必须重写父类的抽象方法,或者声明自身为抽象类。这个和接口有类似的功效。
//计算年假
public class AskForLeave extends Employee {
public double computeYear() {
if (this.entryAge >= 1) {
return 5.0;
} else {
return 0.0;
}
}
public static void main(String[] args) {
AskForLeave askForLeave = new AskForLeave();
askForLeave.entryAge = 1;
double day = askForLeave.computeYear();
System.out.println("入职满" + askForLeave.entryAge
+ "年,年假有" + day + "天.");
}
}
输出结果
入职满1年,年假有5.0天.
好了,有关Java继承的内容就这么多了,如果你觉得老陈这样讲还可以的话,你就转发和点赞,你的轻轻一点,就是对老陈继续创作的最大鼓励和支持。
一个当了10年技术总监的老家伙,分享多年的编程经验。想学编程的朋友,可关注今日头条:老陈说编程。我在分享Python,前端、Java和App方面的干货。关注我,没错的。
猜你喜欢
- 2024-10-03 Java中的继承关系(java中的继承关系是)
- 2024-10-03 Java面向对象之继承(java面向对象继承例题)
- 2024-10-03 「Java入门」十八 面向对象的三大特征之一-继承
- 2024-10-03 [Java基础]09.继承(java基础案例教程第二版)
- 2024-10-03 Java中的继承、封装、多态 #Java开发
- 2024-10-03 Java中的继承与组合(java中继承的概念以及使用继承的好处)
- 2024-10-03 《极简Java新手编程之道》8.1.1 Java语言中实现继承
- 2024-10-03 Java:类与继承(java类与继承抽象类)
- 2024-10-03 Java基础——面对对象-继承(面对对象的特征有哪些方面java基本数据类型有哪些)
- 2024-10-03 你真的熟悉Java中的继承与多态?给你几分钟能回答上来?
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)