JAVA 之 继承
1:继承的定义:
Java继承是面向对象的最显著的一个特征。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
2:关键字: extends :继承
3:格式形式: public class A extends B {} A:代表子类 B:代表父类
4:子类可继承父类的public,protected成员。
5:java中的继承是单继承的,具有单根性,传递性。所以一个类就只有一个父类。
6:方法重写: (子类对父类方法的重写)
其规则:
1:子类的返回值类型,方法名,参数列表必须和父类的相同;
2:访问修饰符必须大于父类修饰符的范围;
3:子类重写的异常不能抛出的比父类多。
与之区别的 方法重载
规则:在一个类中有两个及以上的方法名相同,参数列表不同的。
7:super 关键字:父类 超类
8:final 关键字
1:final类:没有子类,不能被继承
2:final方法:不能被重写
3:final常量:常量值不能被修改
9:继承的优点:
1: 代码的重用性
2:父类的方法和属性可以用于子类
3:设计应用程序变得简单
4:子类可继承父类的属性和方法
10:实例化过程
:继承的练习:
1. 创建宠物类,宠物有名称,健康值,与主人亲密值的属性
2. 创建狗类,狗有名称,健康值,与主人亲密值,品种的属性
3. 创建企鹅类,企鹅有名称,健康值,与主人亲密值,性别的属性
4. 创建狗对象,打印出狗的基本信息
5. 创建企鹅对象,打印企鹅的基本信息
6. 添加宠物叫的方法,测试打印狗和企鹅的叫的方法,如狗是“汪汪汪”的叫,企鹅是“咕咕咕”的叫
分析:
宠物类 狗类 企鹅类 狗类和企鹅类继承了宠物类的名称,健康值,与主人亲密值的属性
代码:
package com.lovo.exercise;
/**
* 宠物类
*
* @author Administrator
*
*/
public abstract class Pet {
private String name;
private int health;
private int love;
public Pet() {
super();
System.out.println("Pet构造器中");
}
public Pet(String name, int health, int love) {
this.name = name;
this.health = health;
this.love = love;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getHealth() {
return health;
}
public void setHealth(int health) {
this.health = health;
}
public int getLove() {
return love;
}
public void setLove(int love) {
this.love = love;
}
public String toString() {
return "Pet [name=" + name + ", health=" + health + ", love=" + love+ "]";
}
public abstract void shout();
}
//狗类
package com.lovo.exercise;
/**
* 狗
*
* @author Administrator
*
*/
public class Dog extends Pet {
private String strain; // 品种
public Dog() {
System.out.println("Dog构造器中");
}
public Dog(String name, int health, int love, String strain) {
super(name, health, love);
this.strain = strain;
}
public String getStrain() {
return strain;
}
public void setStrain(String strain) {
this.strain = strain;
}
public String toString() {
return super.toString() + "\nDog [strain=" + strain + "]";
}
public void shout() {
System.out.println("汪汪汪");
}
}
//企鹅类
package com.lovo.exercise;
/**
* 企鹅
*
* @author Administrator
*
*/
public class Penguin extends Pet {
private String sex;
public Penguin() {
}
public Penguin(String name, int health, int love, String sex) {
super(name, health, love);
this.sex = sex;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return super.toString() + "\nPenguin [sex=" + sex + "]";
}
public void shout(){
System.out.println("咕咕咕");
}
}
//测试
package com.lovo.exercise;
public class Test {
public static void main(String[] args) {
Dog dog = new Dog("小白", 88, 99, "雪拉瑞");
System.out.println(dog);
dog.shout();
System.out.println("**********************");
Penguin pen = new Penguin("Q妹妹", 88, 99, "女");
System.out.println(pen);
pen.shout();
}
}
二、使用抽象类抽象方法完成


汽车有车牌号、品牌 属性
轿车有型号属性
客车有座位数属性
JAVA 之 继承的更多相关文章
- 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):把数据及对数据的操作方法放在一起,作为一个相互依存的整体,即对象. 对同类对象抽象出共性,即类. 比如人就是一个类 ...
- [ Java学习基础 ] Java的继承与多态
看到自己写的东西(4.22的随笔[ Java学习基础 ] Java构造函数)第一次达到阅读100+的成就还是挺欣慰的,感谢大家的支持!希望以后能继续和大家共同学习,共同努力,一起进步!共勉! ---- ...
- Java开发知识之Java的继承多态跟接口*
Java开发知识之Java的继承多态跟接口 一丶继承 1.继承的写法 在Java中继承的 关键字是 extends 代表一个类继承另一个类. 继承的含义以及作用: 继承就是基于某个父类的扩展.制定出来 ...
- JAVA通过继承线性表来实现有序表
1,对于线性表而言,里面的元素是无序的,可以随意地将新元素增加到线性表中而不需要考虑该元素在线性表中的位置.但是,对于有序表而言,其中的元素是按照某种方式进行排序的,因此在有序表中插入元素时,需要按照 ...
- java中继承thread类的其他类的start()方法与run()方法
java中继承thread或者实现runnable接口的类必须重写run()方法. 如果其执行了start()方法,其实就是启动了线程的run()方法. 注意:如果是实现runnable接口的类是没有 ...
随机推荐
- MySQL中不允许使用列别名作为查询条件
在MySQL中有个特殊的规定,即不允许使用列别名作为查询条件.比如有下面一个表: select ID, title, concept, conceptLength, ...
- Java内存模型解惑--观深入理解Java内存模型系列文章有感(二)
1.volatile关键字修饰的域的特性 当我们声明共享变量为volatile后,对这个变量的读/写将会很特别.理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用 ...
- Android-LoaderManager异步加载数据库数据
LoaderManager异步加载数据库数据,是在(Activity/fragment/其他UI等) 加载大量的本地Database库表数据,由于数据大在加载过程中会导致UI线程阻塞,导致用户体验不好 ...
- Java何时该使用覆盖?
在Java编程中,什么时候该使用覆盖函数操作呢,很多人都知道有覆盖操作,但是到底什么时候该使用覆盖操作,还是有一些模糊的感觉,以下就举例来用代码分析就明白了, 举例生活中的案例,模拟制造手机的公司: ...
- Django开发Web监控工具-pyDash
今天发现了一个比较有意思的监控工具,是基于Django开发的,开发大牛已经开放了源代码,向大牛致敬,同时研究研究,目前感觉这个监控比较直观,可以针对个人服务器使用,同时涉及的环境比较简单,部署起来 ...
- 使用jetty-maven-plugin运行maven多项目
1.准备工作 org.eclipse.jetty jetty-maven-plugin 9.2.11.v20150529 jdk 1.7 maven 3.1 2.采用maven管理多项目 ...
- laravel字段自增/自减
DB::table('users')->increment('votes');DB::table('users')->increment('votes', 5);DB::table('us ...
- leetcode 第三大的数
给定一个非空数组,返回此数组中第三大的数.如果不存在,则返回数组中最大的数.要求算法时间复杂度必须是O(n). 示例 1: 输入: [3, 2, 1] 输出: 1 解释: 第三大的数是 1. 示例 2 ...
- 构建NetCore应用框架之实战篇(一):什么是框架,如何设计一个框架
一.系列简述 本篇起,将通过一系列文章,去描述如何构建一个应用开发框架,并以作者开发的框架为例,逐个点展开分析,如何从零开始,构建自己的开发框架. 本系列文章的目的,是带领有一编程经验的人,通过动手, ...
- .net core webapi+EF Core
.net core webapi+EF Core 一.描述: EF Core必须下载.net core2.0版本 Micorsoft.EntityFrameworkCore:EF框架的核心包Micor ...