Java(14)继承
1.继承(extends)
1.1 继承:遗传
1.2 语法
public class 子类 extends 父类{
}
public class Dog extends Pet{
}
public class Pet {
private String name = "无名氏";
private int health = 90;
private int love = 0;
public Pet(){
this.health = 95;
System.out.println("执行宠物的无参构造方法");
}
public Pet(String name){
this.name = name;
}
public String getName(){
return name;
}
public int getHealth(){
return health;
}
public int getLove(){
return love;
}
public void ji(){
System.out.println("宠物的自白:\n我的名字叫"+this.name+",健康值是"+this.health
+",和主人的亲密度是"+this.love+"。");
}
}
宠物类
public class Dog extends Pet{
private String strain;
public Dog(String name,String strain){
//super(name);
this.strain = strain;
}
public String getStrain(){
return strain;
}
public void ji(){
super.ji();
System.out.println("我是一只"+this.strain);
}
}
狗狗类继承宠物类
/*
* 继承语法
* 修饰符 SubClass extends SuperClass{
* 类定义部分
* }
* 继承通过extends关键字来实现,其中SubClass为子类,SuperClass为父类
* 修饰符如果是public,则该类在整个项目中可见,若无public修饰符,则该类只在当前包可见
* 不可以使用private和protected修饰类
*/
public class Penguin extends Pet {
private String sex;
//final String home = "南极";
// public void setHome(String home){
// this.home = home; // home不可以再次赋值
// }
public Penguin(String name,String sex){
super(name);
this.sex = sex;
}
public String getSex(){
return sex;
}
public void ji(){
super.ji();
System.out.println("性别是:"+this.sex);
}
}
企鹅类继承宠物类
/*
* 方法的重写
* 在子类中可以根据需求对父类继承的方法进行重新编写
* 要求:重写方法和别重写方法必须具有相同的方法名
* 必须具有相同的参数列表
* 重写方法的返回值类型必须和被重写方法的返回值类型相同
* 重写方法不能缩小被重写方法的访问权限
*/
public class TextDPP {
public static void main(String[] args){
Pet pet = new Pet("吉吉");
pet.ji();
Dog dog = new Dog("狗狗","雪狼");
dog.ji();
Penguin pgn = new Penguin("胖胖","Q妹");
pgn.ji();
}
}
测试类
运行结果为:
1.3 继承的特点
a.子类可以继承父类的非尸用的属性和方法
b.不能继承构造方法
c.继承默认权限修饰符的方法和属性,子类和父类必需在同一包中
1.4 super(父类)
super.属性名//表示方法父类的属性
super.方法名(参数);//表示访问父类的方法
super.(参数);//表示访问父类的构造函数
注意: super()访问父类构造函数时,必须写在第一行
注意:代码块会执行在构造函数之前
2.重写
2.1 重写就是子类重写定义父类的方法
2.2 重写规则
a.方法名和参数列表相同
b.修饰符访问权限子类和父类相同或者比父类大
c.返回值类型子类和父类相同(或者是父类返回值类型的子类)
d.异常跟父类相同或者范围更小
一般:重写时,子类的东西都要和父类保持一致
构造方法不能被重写
因为不能被继承所以不能被重写
3.抽象类
3.2.抽象方法
语法:public abstract 返回值类型 方法名(参数列表);
例:public abstract void print();
注意:抽象方法有abstract修饰,并且抽象方法没有方法体
public class Fish extends Animal{
int weight = 5;
int age = 9;
public void info(){
System.out.println("我是一只"+weight+"的鱼!");
System.out.println("今年"+age+"岁了!");
}
}
鱼类继承动物类
public abstract class Animal {
int age;
String color = "";
int weight;
abstract void info(); //抽象这个方法让子类去实现
}
动物抽象类
public class Bird extends Animal{
String color="红色";
int age = 4;
public void info(){
System.out.println("我是一只"+color+"的鸟!");
System.out.println("今年"+age+"岁了!");
}
}
鸟类继承动物类
public class TextBFA {
public static void main(String[] args){
Bird b= new Bird();
b.info();
Fish f = new Fish();
f.info();
}
}
测试类
运行结果为:
4.抽象类和抽象方法的特点
a.都用abstract修饰
b.抽象类不能实例化
并且继承抽象类的子类都必须重写抽象类的所有抽象方法
注意:1)抽象类中不一定有抽象方法
2)含有抽象方法中的类,一定是抽象类(接口)
Java(14)继承的更多相关文章
- Java中继承,类的高级概念的知识点
1. 继承含义 在面向对象编程中,可以通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类,这种方式称为继承(inheritance). 2. 继承的优点 A.代码的可重用性 B.子类可以扩 ...
- Java 14 发布了,可以扔掉Lombok了?
2020年3月17日发布,Java正式发布了JDK 14 ,目前已经可以开放下载.在JDK 14中,共有16个新特性,本文主要来介绍其中的一个特性:JEP 359: Records 官方吐槽最为致命 ...
- Java 14 祭出代码简化大器,Lombok 要被干掉了?
Java 14 3 月发布距现在已经发布 2 个多月,发布了很多新特性,详细的新特性介绍可以看这篇文章: http://www.javastack.cn/article/2020/java14-has ...
- java基础-继承
浏览以下内容前,请点击并阅读 声明 一个由其他类继承的类叫子类(也叫继承类,扩展类等),该类继承的类叫父类或超类.除了Object类意外,所有的类都有切仅有一个父类,如果一个类没有用extends关键 ...
- Java面向对象㈡ -- 继承与多态
Java的继承是通过extends和implement来实现的,Java不支持多继承,但是Java支持多层继承以及多实现(接口).Java继承有一个关键字super是用来指向父类.Java继承衍生出覆 ...
- java的继承机制
这次我想深入探究以下java里类的继承机制. 我们知道,继承是java设计里的一个失败的地方.高司令说过:如果让他重新设计java的话,他会把继承去掉.而java里继承到底怎么了,会这么不 ...
- Java面向对象 继承(下)
Java面向对象 继承(下) 知识概要: (1)抽象类 1.1 抽象类概述 1.2 抽象类的特点 ...
- Java面向对象 继承(上)
Java面向对象 继承 知识概要: (1)继承的概述 (2)继承的特点 (3)super关键字 (4)函数覆盖 (5) 子类的实例化过程 (6) final关键字 (1)继承 ...
- Java的继承、封装与多态
Java的继承.封装与多态 基本概念 面向对象OO(Object Oriented):把数据及对数据的操作方法放在一起,作为一个相互依存的整体,即对象. 对同类对象抽象出共性,即类. 比如人就是一个类 ...
随机推荐
- 【国家集训队2012】tree(伍一鸣)
Description 一棵n个点的树,每个点的初始权值为1.对于这棵树有q个操作,每个操作为以下四种操作之一: + u v c:将u到v的路径上的点的权值都加上自然数c: - u1 v1 u2 ...
- Qtp自动测试工具(案例学习)
♣Qtp是什么? ♣测试用例网站 ♦注册与登录 ♦测试脚本 ◊录制/执行测试脚本 ◊分析录制的测试脚本 ◊执行.查看测试脚本 ♦建立检查点 ...
- linux 内核的另一个自旋锁 - 读写锁
除spinlock外,linux 内核还有一个自旋锁,名为arch_rwlock_t.它的头文件是qrwlock.h,包含在spinlock.h,头文件中对它全称为"Queue read/w ...
- hdu3336 kmp
It is well known that AekdyCoin is good at string problems as well as number theory problems. When g ...
- OA办公系统功能真的越全越好?
4.原文:http://www.jiusi.net/detail/472__776__4000__1.html 关键词:oa系统,OA办公系统 OA办公系统功能真的越全越好? 很多企业在选择OA办公系 ...
- The authenticity of host '172.16.33.53 (172.16.33.53)' can't be established的问题(日志六)
用ssh登录一个机器(换过ip地址)会出现如下错误 weiguohui@weiguohui1-virtual-machine:~/.ssh$ ssh 172.16.33.53The authentic ...
- hdu1151 Air Raid 二分匹配
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1151 求最小路径覆盖 二分图最小路径覆盖=点的个数-最大匹配. 代码: #include<ios ...
- 深入理解Java常用类----String
Java中字符串的操作可谓是最常见的操作了,String这个类它封装了有关字符串操作的大部分方法,从构建一个字符串对象到对字符串的各种操作都封装在该类中,本篇我们通过阅读String类的源码 ...
- 「CODVES 1922 」骑士共存问题(二分图的最大独立集|网络流)&dinic
首先是题目链接 http://codevs.cn/problem/1922/ 结果发现题目没图(心情复杂 然后去网上扒了一张图 大概就是这样了. 如果把每个点和它可以攻击的点连一条边,那问题就变成了 ...
- 第七篇:数据预处理(四) - 数据归约(PCA/EFA为例)
前言 这部分也许是数据预处理最为关键的一个阶段. 如何对数据降维是一个很有挑战,很有深度的话题,很多理论书本均有详细深入的讲解分析. 本文仅介绍主成分分析法(PCA)和探索性因子分析法(EFA),并给 ...