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接口的类是没有 ...
随机推荐
- java web中如何获取spring容器中定义的bean----WebApplicationContext的使用
本文简单编写一个servlet来获取spring容器中管理的<bean id="dateBean" class="java.util.Date" sin ...
- PGF基本图形对象
\documentclass{article} \usepackage[active ,tightpage ,xetex ]{ preview} \usepackage{tikz} \begin{do ...
- C#通过盘符获取剩余空间
public static long GetHardDiskSpace(string str_HardDiskName) { ; str_HardDiskName = str_HardDiskName ...
- 2D and 3D Linear Geometry Kernel ( Geometry Kernels) CGAL 4.13 -User Manual
1 Introduction CGAL, the Computational Geometry Algorithms Library, is written in C++ and consists o ...
- ASP.NET MVC Areas View 引用 外部母版视图
ASP.NET MVC Area => Areas View 引用 外部母版视图 创建项目:MVCSite.Area 创建mvc area 1.Areas View 引用 外部母版视图 1.1 ...
- 使用css保持一定宽高比例
需求描述:移动端实现横跨页面半圆.(类似问题,实现4x4的正方形网格) 简化问题,我们可以理解为实现一个高度和宽度比为1:2的块. 需要解决问题: 1,高度和宽度按照一定比例. 2,外容器高度和宽度不 ...
- f.lux在linux下的安装和使用
安装还是蛮容易的~只是装完后在白天色温没什么变化就一直以为没有装成功 https://justgetflux.com/linux.html 这里下载,解压后 安装好以后xflux -l (经纬度) 就 ...
- Docker容器的自动化监控实现
本文由 网易云 发布. 近年来容器技术不断成熟并得到应用.Docker作为容器技术的一个代表,目前也在快速发展中,基于 Docker的各种应用也正在普及,与此同时 Docker对传统的运维体系也带来 ...
- Spring 开发第一步
经过今天上午的学习发现spring上手开发一个"hello world"真的非常简单. 开发环境搭建: 1.去spring官网下载spring-framework-3.2.11.R ...
- 洛谷P3369 【模板】普通平衡树(Splay)
题面 传送门 题解 鉴于最近的码力实在是弱到了一个境界--回来重新打一下Splay的板子--竟然整整调了一个上午-- //minamoto #include<bits/stdc++.h> ...