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):把数据及对数据的操作方法放在一起,作为一个相互依存的整体,即对象. 对同类对象抽象出共性,即类. 比如人就是一个类 ...
随机推荐
- JDK与Apache Tomcat服务器的安装步骤
先解释一下JDK和Tomcat是什么: Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP ...
- 脚本语言:Xmas(三)
自从将Xmas的GC换成现在的非迁移式的全局收集器后,最近几个月一直耗在Xmas上面:最明显的改变就是:更彻底地支持了面向对象.更强大的编译器. 所以,本文就来说说,真正的Xmas. 一.目标 一门语 ...
- iOS APP打包分发给远程的手机测试
APP要打包给远程的朋友或客户测试,但又不是企业账号的情况下,我们只能根据手机的udid进行描述证书的配置,再打包分发给提供了udid的手机进行安装 一.如何得到udid? 手机连接到mac电脑,打开 ...
- Java的CLASSPATH
在JDK安装好后,要设置两个变量Path和Classpath,Path是操作系统要求的,这里不谈了,而classpath是Java虚拟机要求的这里做一个详细的解释. 一.classpath的作用 == ...
- 二、Windows基础数据类型
六.Windows Data Types 简介: 6.1.这些数据类型都是C语言数据类型的再次的进行包装. 6.2.因为考虑到如果使用的是C中的基础数据类型可能无法表示,想表示的精准的含义. 6.3. ...
- zen coding一个牛的不行的html和css开发工具
zen coding 是一种仿css选择器的语法来快速开发html和css的开源项目.现已更名为Emmet.可以到github上下载拜读.在这个都想偷懒的世界里,此方法可以极大的缩短开发人员的开发时间 ...
- .net数据统计系统设计(中小型)
近一年多没在博客园写东西了,从换公司后就一直努力学习公司的框架和业务.而今接手一个电商数据统计项目,在博客园搜索统计项目解决方案却一无所获,最终自己设计并在开发的过程中持续更新,希望可以和大家一起交流 ...
- 机器学习:从编程的角度理解BP神经网络
1.简介(只是简单介绍下理论内容帮助理解下面的代码,如果自己写代码实现此理论不够) 1) BP神经网络是一种多层网络算法,其核心是反向传播误差,即: 使用梯度下降法(或其他算法),通过反向传播来不断调 ...
- C#的内存管理原理解析+标准Dispose模式的实现
本文内容是本人参考多本经典C#书籍和一些前辈的博文做的总结 尽管.NET运行库负责处理大部分内存管理工作,但C#程序员仍然必须理解内存管理的工作原理,了解如何高效地处理非托管的资源,才能在非常注重性能 ...
- TOJ4101.Guess Game(TOJ means Tianjin University Online Judge)(dp的思想,但这道题目是假dp)
题意:你要从[1,n]这个n个数中猜出来规定的某个数,现在这个数未知,问你在最糟糕的情况下(但是你采用了最优的策略),你要猜多少次才能猜出这个数.现在有两种条件: 第一种:当你猜的数比指定的那个数小的 ...