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)继承的更多相关文章

  1. Java中继承,类的高级概念的知识点

    1. 继承含义 在面向对象编程中,可以通过扩展一个已有的类,并继承该类的属性和行为,来创建一个新的类,这种方式称为继承(inheritance). 2. 继承的优点 A.代码的可重用性 B.子类可以扩 ...

  2. Java 14 发布了,可以扔掉Lombok了?

    2020年3月17日发布,Java正式发布了JDK 14 ,目前已经可以开放下载.在JDK 14中,共有16个新特性,本文主要来介绍其中的一个特性:JEP 359: Records 官方吐槽最为致命 ...

  3. Java 14 祭出代码简化大器,Lombok 要被干掉了?

    Java 14 3 月发布距现在已经发布 2 个多月,发布了很多新特性,详细的新特性介绍可以看这篇文章: http://www.javastack.cn/article/2020/java14-has ...

  4. java基础-继承

    浏览以下内容前,请点击并阅读 声明 一个由其他类继承的类叫子类(也叫继承类,扩展类等),该类继承的类叫父类或超类.除了Object类意外,所有的类都有切仅有一个父类,如果一个类没有用extends关键 ...

  5. Java面向对象㈡ -- 继承与多态

    Java的继承是通过extends和implement来实现的,Java不支持多继承,但是Java支持多层继承以及多实现(接口).Java继承有一个关键字super是用来指向父类.Java继承衍生出覆 ...

  6. java的继承机制

    这次我想深入探究以下java里类的继承机制.       我们知道,继承是java设计里的一个失败的地方.高司令说过:如果让他重新设计java的话,他会把继承去掉.而java里继承到底怎么了,会这么不 ...

  7. Java面向对象 继承(下)

     Java面向对象   继承(下) 知识概要:               (1)抽象类 1.1 抽象类概述                            1.2 抽象类的特点       ...

  8. Java面向对象 继承(上)

       Java面向对象 继承 知识概要:         (1)继承的概述 (2)继承的特点 (3)super关键字 (4)函数覆盖 (5) 子类的实例化过程 (6) final关键字 (1)继承 ...

  9. Java的继承、封装与多态

    Java的继承.封装与多态 基本概念 面向对象OO(Object Oriented):把数据及对数据的操作方法放在一起,作为一个相互依存的整体,即对象. 对同类对象抽象出共性,即类. 比如人就是一个类 ...

随机推荐

  1. 使用了UnityEditor中的API,打包时却不能打包UnityEditor的问题

    前段时间写了一篇名叫<Unity使用Windows弹窗保存图片>的文章 然而现在项目进入了测试阶段 就在发布的时候,这个地方出问题了 问题出在using UnityEditor; 如上文章 ...

  2. Nginx 反向代理&负载均衡

    1.反向代理 当我们请求一个网站时,nginx会决定由哪台服务器提供服务,就是反向代理. nginx只做请求的转发,后台有多个tomcat服务器提供服务,nginx的功能就是把请求转发给后面的服务器, ...

  3. VirtulBox虚拟机搭建Linux Centos系统

    简要说明 该文章目的是基于搭建hadoop的前置文章,当然也可以搭建Linux的入门文章.那我再重复一下安装准备软件. 环境准备:http://pan.baidu.com/s/1dFrHyxV  密码 ...

  4. IOS的UIPickerView 和UIDatePicker

    1.UIPickerView的常见属性 //数据源(用来告诉UIPickerView有多少列多少行) @property(nonatomic,assign) id<UIPikerViewData ...

  5. 2017最新最稳定的彩票源码PHP+mysql 新增彩种+全新界面

    网站后台管理系统:新闻资讯系统 用户管理系统用户登录日志彩种规则说明玩法时间设置彩票期号管理足球对阵管理彩票方案撤单彩票出票管理开奖号码管理彩票方案查询彩票中奖查询 彩票追号查询服务支持中心财务中心管 ...

  6. 简单jQuery 实现手风琴菜单

    简单jQuery 实现手风琴菜单 css代码 如下: *{ margin: 0; padding: 0; } #accordion{ width: 500px; } #accordion>div ...

  7. 【收藏】15个常用的javaScript正则表达式

    1 用户名正则 //用户名正则,4到16位(字母,数字,下划线,减号) var uPattern = /^[a-zA-Z0-9_-]{4,16}$/; //输出 true console.log(uP ...

  8. 当一个JavaScripter初次进入PHP的世界,他将看到这样的风景

     本文将从以下11点介绍javascript和PHP在基础语法和基本操作上的异同: 1.数据类型的异同 2.常量和变量的定义的不同,字符串连接运算符不同 3.对象的创建方法的不同 4.PHP与JS在变 ...

  9. bash下. : () {} [] [[]] (())的解释 (非原创,侵删)

    Copy from http://blog.chinaunix.net/uid-20380484-id-1692999.html bash下有很多像{}.[]等一些符号命令,下面是我对一些常用的符号命 ...

  10. 029 hibernate抓取策略

    实例A引用实例B,B如果是代理的话(比如多对一关联中):如果遍历A的查询结果集(假设有10条记录),在遍历A的时候,访问B变量,将会导致n次查询语句的发出!这个时候,如果在B一端的class上配置ba ...