继承的概念:(个人理解)
抽取子类的共性(属性和方法),再创建一个类将这些共性写里面(这个类称为父类),子类继承(extends)父类,就具备了这些共性(父类的属性和方法)

语法格式: class 子类 父类 extends 父类
特点是:

  1. 让类与类之间产生关系,然后子类就可以使用继承,继承父类中非私有的成员
  2. 具有传递性,孙子类也可以使用祖辈的非私有的属性和行为

继承的好处:

  1. 提高代码的复用性(多个类中相同的成员放到一个类中,再使用extends继承即可)
  2. 提高代码的维护性(只需要修改父类中)
    弊端
  3. 类与类之间产生了父子关系,当父类发生变化时,子类也发生变化,削弱了子类的独立性
public class Demo01 {public static void main(String[] args) {Student st=new Student();}
}
/*** 人类*/
class Person{String name;//姓名String num;//身份证号String sex;//性别//行为public void eat(){System.out.println(name+"吃饭");}public void sleep(){System.out.println(name+"正在睡觉");}public void playGame() {System.out.println(name+"正在打游戏");}
}/*** 子类:学生*/
class Student extends Person{public void study(){System.out.println(name+"正在学习");}
}/**1. 子类:老师*/
class Teacher extends Person{int id;public void teaching(){System.out.println(name+"正在讲课");}
}
/*
*孙子类
*/
class JavaTeacher extends Teacher{public void teacherJava(){System.out.println(name+"正在上java课!");}
}

继承的重写

  1. 子类出现了和父类一摸一样的方法声明(方法名和方法参数必须是一致)
    重写的应用场景
    当子类需要父类功能,而且功能主体子类有持有自己的内容的时候,可以重写父类的方法
    这样沿袭了父类的功能,有持有子类特有的内容

两同两小一大:

  1. 两同:方法名相同,参数列表相同
  2. 两小:返回值类型和抛出异常
  3. 一大:父类的访问权限必须小于或等于子类的访问修饰符

返回值类型:

  1. void和基本数据类型:父类的返回值类型和子类的返回至类型必须一致
  2. 引用数据类型:若父类的方法返回类型是引用数据类型,则该子类重写该方法时,引用数据类型可以是父类本身,可以是父类的子类,也可以是子类本身

抛出异常:

  1. 子类抛出异常小于或等于父类方法抛出的异常
public class demo02 {public static void main(String[] args) {Boo b=new Boo();b.name="小刘";b.sayHi();Coo c=new Coo();c.name="小吴";c.sayHi();}
}
class Aoo{String name;public  void sayHi(){System.out.println("Aoo"+name+"Hi~");}public Aoo test(){//要求返回Aoo类型的对象return new Aoo();//创建Aoo类型的对象,并根据return返回}public int add(){return 10;}
}
class Boo extends Aoo{//重写@Override//标志这下面这个方法是重写public void sayHi(){System.out.println("Boo"+name+"Hi~");}
}
class Coo extends Boo{public Boo test(){return new Boo();}public int add(){return 10;}
//    public Aoo test(){//        return new Aoo();
//    }
//    public Coo test(){//        return new Coo();
//    }
}

继承中成员访问的特点
this:代表的是本类对象的引用
super:代表的是父类对象的引用
this&super
成员变量:

  1. this.变量名----->表示本类的成员变量
  2. super.变量名---->表示访问父类的成员变量

成员方法:

  1. this.方法名----->表示访问本类的成员方法
  2. super.方法名----->表示访问父类的成员方法
public class Demo03 {public static void main(String[] args) {B b=new B();b.test();}
}
class A{int age=10;public  void show(){System.out.println("A的show");}public void sayHi(){System.out.println("A中的sayHi()");}
}
class B extends A{int age=20;public void test(){/*静态方法(指的是static修饰的方法)非静态方法:(没有static修饰的方法) 非静态中有隐式的this传递*/int age=30;/*若父类和子类以及方法都定义一个age,那么在该方法输出age的时候,就近原则输出方法中的局部变量中的age的值*///演示调用this和superSystem.out.println("局部变量"+age);System.out.println("B中的age:"+this.age);System.out.println("A中的age:"+super.age);//演示调用this和super调用成员方法//this.sayHi();//调用B类自己的sayHi//sayHi();//==this.sayHi() 非静态方法中的特征super.sayHi();}public void sayHi(){System.out.println("B中的sayHi()");}
}

定义厨师类和收银员类,找到厨师类和收银员类当中的共性内容,抽取出父类员工类,用继承的方式改写代码,并进行测试

1.共性抽取父类,定义员工类(姓名,年龄)

2.定义厨师类,继承员工类,并给出自己特有方法:烹饪()

3.定义收银员类,继承员工类,并给出自己特有方法:收银()

4.定义测试类,写代码测试

public class Test {public static void main(String[] args) {Chef chef=new Chef("山山",20);chef.cooking();Cashier cashier=new Cashier("亮亮",21);cashier.collectMoney();}
}
class Staff{String name;int  age;
}
/***厨师类*/
class Chef extends Staff{public void cooking(){System.out.println("我叫"+name+"\t今年:"+age+"岁了,我会烹饪");}public Chef(String s,int i){name=s;age=i;}public Chef(){name=null;age=0;}
}/*** 收银员类*/
class Cashier extends Staff{public void collectMoney(){System.out.println("我叫"+name+"\t今年:"+age+"岁了,我会收钱");}public Cashier(String s,int i){name=s;age=i;}public Cashier(){name=null;age=0;}
}

抽取出Hero和Ep类相同的属性和行为,做一个飞行物类flyobject,然后让hero和Ep类继承该类

再一次调用方法进行测试

public class Test {public static void main(String[] args) {Hero hero=new Hero();hero.moveUP();hero.moveDown();hero.moveLeft();hero.moveRight();Ep ep=new Ep();ep.move();}}
class FlyObject{int x;//横坐标int y;//纵坐标int w;//飞机宽度int h;//飞机的高度int hp;//飞机的血量
}
class Hero extends FlyObject{//无参构造 初始化赋值public Hero(){x=200;y=600;w=100;h=50;hp=10;}//成员方法public void moveUP(){y--;System.out.println("英雄机移动后的y值:"+y);}public void moveDown(){y++;System.out.println("英雄机移动后的y值:"+y);}public void moveLeft(){x--;System.out.println("英雄机移动后的x值:"+x);}public void moveRight(){x++;System.out.println("英雄机移动后的x值:"+x);}}class Ep extends FlyObject{int type;//敌机的类型int sp;//敌机的速度//无参构造 初始化赋值public Ep(){x=10;y=10;w=20;h=20;hp=5;type=5;sp=1;}public void  move(){y++;System.out.println("敌机移动后的xy值:"+x+","+y);}
}

java学习第13天相关推荐

  1. java学习笔记(13) 第13章 - 常用类

    第13 章常用类-目录 13.1 包装类 13.1.1 包装类的分类.包装类和基本数据的转换.案例演示.课堂测试 13.1.2 包装类型和String 类型的相互转换 13.1.3 Integer 类 ...

  2. java学习笔记13:正则表达式、System类、Date类、Calendar类

    一.正则表达式 1.概述:是指一个用来描述或者匹配一系列符合某个句法规则的字符串:其实就是一种规则,有自己特殊的应用. 2.正则表达式的组成规则 (1).字符 表达式 代表含义 x 字符 x.举例:' ...

  3. Java学习笔记13

    Object类是所有类.数组.枚举类的父类,是类层次结构的根类.每个类都使用Object作为超类.所有对象(包括 数组)都实现这个类的方法. Object类实现了以下方法: 我们来看看源码中hashC ...

  4. java学习(13):scanner中的方法

    //Scanner类中的方法 //优点一: 可以获取键盘输入的字符串 //优点二: 有现成的获取int,float等类型数据,非常强大,也非常方便: public static void Scanne ...

  5. Java学习笔记13(equals()方法;toString()方法)

    equals()方法: equals方法是Object类中的方法:Object是所有类的祖宗,所以所有类都有equals()方法: boolean equals(Object obj); equals ...

  6. 2021年,Java开发者值得学习的13项技能

    本文分享自百度开发者中心2021年,Java开发者值得学习的13项技能 作者 | Olivia Cuthbert 译者 | 王强 策划 | 刘燕 如果你想在这个竞争激烈的世界里,成为一名熟练开发 Ja ...

  7. 2021 年,Java 开发者值得学习的 13 项技能

    作者 | Olivia Cuthbert 译者 | 王强 策划 | 刘燕 如果你想在这个竞争激烈的世界里,成为一名熟练开发 Java 项目的开发人员,你应该学习很多东西才行.你需要掌握许多技能,具体应 ...

  8. int arr 13 java,java学习13 - 数组的定义、操作、异常、二维数组

    续java学习12: 1.数组,引用类型变量,保存数据实际是保存的数组的首地址 2.定义数组容器三要素,数据类型,大小(长度),数组名 3.数组的定义公式一:数据类型[] 数组名 = new 数据类型 ...

  9. java 量化指标_量化投资学习笔记13——各种指标的绘图、计算及交易策略

    <量化投资:以python为工具>第五部分笔记 先来画k线图,要注意finance模块已经从matplotlib库中去除,现在要用mpl_finance库,单独安装. 其中有candles ...

最新文章

  1. C语言 socket shutdown()函数(将与 sockfd 关联的套接字上的全双工连接全部或部分关闭)
  2. c语言求泰勒正弦公式,用泰勒公式求sin(x)的近似值
  3. 832. Flipping an Image
  4. C# 访问mongodb数据库
  5. C语言在当代人工智能背景下的作用,人工智能对于当代社会的意义
  6. 阿里架构师首次畅谈余额宝背后的故事
  7. 2021靠谱的IT培训机构排名重磅来袭!
  8. 需求跟踪矩阵的问题及模板下载
  9. 运用ssis组件实现邮件发送,内容来源于数据库表
  10. 静态代理和动态代理区别(是否有实现类)
  11. pycharm 查看 python源代码
  12. Android ActivityManager: Waited long enough for: ServiceRecord
  13. 数据结构实验头歌 第1关:求图的最短路径
  14. 【杂谈】当你在凝视深渊的时候,深渊也正在凝视着你
  15. Problem G: 规范序排列
  16. Windows 文本大文件查看工具
  17. 网龙入股大数据智能教育平台 -- “爱多分”
  18. 阿里视频云点播解决方案,直播转点播最佳实践
  19. phpMyAdmin - 配置文件权限错误,不应任何用户都能修改!
  20. 网站绑定 qq 登录和 新浪微博 登录

热门文章

  1. 东南亚最大综合地产开发商之一SM集团全球第82家购物中心开业
  2. 06 SpringBoot企业实战多环境切换之Profile
  3. 基于虚幻引擎与AppleAR的人脸动画实时迁移项目
  4. 论文总结(二)—图像复原
  5. Excel打开csv文件出现乱码
  6. 大家怎么过的年......
  7. pyqt5制作简单的视频播放器(一):界面制作
  8. 方舟服务器建设工具最新版本,方舟生存进化原始服务器新物品图鉴 基础材料工具...
  9. postman测试遇到的奇葩问题之:HttpMessageNotReadableException: Required request body is missing
  10. CountDownLatch测试await