摘要:韦东山android视频学习笔记 

面向对象程序的三大特性之继承性:继承性的主要作用就是复用代码.继承性也有一定的限制,如图一

图一

1、我们在第2课第2节_Java面向对象编程_封装性_P 中定义了persion.我在这代码基础上定义一个学习类,并继承persion类。

  1. class Persion{
  2. private int age;
  3.  
  4. public void setAge(int age){
  5. if (age < 0 || age > 200)
  6. age = 0;
  7. else
  8. this.age = age;
  9. }
  10.  
  11. public int getAge(){
  12. return age;
  13. }
  14. }
  15.  
  16. class Student extends Persion{
  17.  
  18. }
  19.  
  20. public class Ext{
  21. public static void main(String args[]){
  22. Student stu = new Student();
  23. stu.setAge(10);
  24.  
  25. System.out.println(stu.getAge());
  26.  
  27. }
  28. }

编译运行结果

2、在上面的代码基础上,我们的子类继承了父类,我们可以添加自己的属性还有方法.

  1. class Persion{
  2. private int age;
  3.  
  4. public void setAge(int age){
  5. if (age < 0 || age > 200)
  6. age = 0;
  7. else
  8. this.age = age;
  9. }
  10.  
  11. public int getAge(){
  12. return age;
  13. }
  14. }
  15.  
  16. class Student extends Persion{
  17. private String school;
  18.  
  19. public void setSchool(String school){
  20. this.school = school;
  21. }
  22.  
  23. public String getSchool(){
  24. return school;
  25. }
  26.  
  27. public Student(String school){
  28. this.school = school;
  29. }
  30.  
  31. }
  32.  
  33. public class Ext2{
  34. public static void main(String args[]){
  35. Student stu = new Student("ustc");
  36. stu.setAge(10);
  37.  
  38. System.out.println(stu.getAge());
  39. System.out.println(stu.getSchool());
  40.  
  41. }
  42. }

编译运行结果

3、子类继承父类的方法和属性都可以进行覆写,我们在子类覆写父类的printInfo方法。

  1. class Persion{
  2. private int age;
  3.  
  4. public void setAge(int age){
  5. if (age < 0 || age > 200)
  6. age = 0;
  7. else
  8. this.age = age;
  9. }
  10.  
  11. public int getAge(){
  12. return age;
  13. }
  14.  
  15. public void printInfo(){
  16. System.out.println("age = " + age);
  17. }
  18. }
  19.  
  20. class Student extends Persion{
  21. private String school;
  22.  
  23. public void setSchool(String school){
  24. this.school = school;
  25. }
  26.  
  27. public String getSchool(){
  28. return school;
  29. }
  30.  
  31. public Student(String school){
  32. this.school = school;
  33. }
  34.  
  35. public void printInfo(){
  36. System.out.println("school = " + school + " age = " + getAge());
  37. }
  38. }
  39.  
  40. public class Ext3{
  41. public static void main(String args[]){
  42. Student stu = new Student("ustc");
  43. stu.setAge(10);
  44.  
  45. System.out.println(stu.getAge());
  46. System.out.println(stu.getSchool());
  47. stu.printInfo();
  48.  
  49. }
  50. }

编译运行结果

4、实例化子类对象时,先调用父类的构造方法,再调用子类的构造方法,super()函数在子类中可以指定调用父类构造函数的类型。

  1. class Persion{
  2. private int age;
  3.  
  4. public void setAge(int age){
  5. if (age < 0 || age > 200)
  6. age = 0;
  7. else
  8. this.age = age;
  9. }
  10.  
  11. public int getAge(){
  12. return age;
  13. }
  14.  
  15. public void printInfo(){
  16. System.out.println("age = " + age);
  17. }
  18.  
  19. public Persion(){System.out.println("Persion()");};
  20. public Persion(int age){
  21. System.out.println("Persion(int age)");
  22. this.age = age;
  23. }
  24. }
  25.  
  26. class Student extends Persion{
  27. private String school;
  28.  
  29. public void setSchool(String school){
  30. this.school = school;
  31. }
  32.  
  33. public String getSchool(){
  34. return school;
  35. }
  36.  
  37. public Student(String school){
  38. super(5);
  39. System.out.println("Student(String school)");
  40. this.school = school;
  41. }
  42.  
  43. public void printInfo(){
  44. System.out.println("school = " + school + " age = " + getAge());
  45. }
  46. }
  47.  
  48. public class Ext4{
  49. public static void main(String args[]){
  50. Student stu = new Student("ustc");
  51. //stu.setAge(10);
  52.  
  53. System.out.println(stu.getAge());
  54. System.out.println(stu.getSchool());
  55. stu.printInfo();
  56.  
  57. }
  58. }

编译运行结果

 5、抽象类规定子类必须实现的方法,起“模板”作用,缺点不能实例化对象,子类必须覆写全部抽象方法

  1. abstract class Father {
  2. private int money;
  3.  
  4. public int getMoney() {return money; }
  5. public void setMoney(int money) {this.money = money; }
  6.  
  7. public abstract void study();
  8. }
  9.  
  10. class Son extends Father{
  11. public void study() {System.out.println("I am study"); }
  12.  
  13. }
  14.  
  15. public class Ext6 {
  16. public static void main (String args[]) {
  17. //Father f = new Father();
  18. Son son = new Son();
  19. son.study();
  20.  
  21. }
  22. }

编译运行结果:

6、作用:跟抽象类相似,起“模板”作用;子类可以继承多个接口,突破“单继承”的限制

  1. abstract class Father{
  2. private int money;
  3.  
  4. public int getMoney(){return money;}
  5. public void setMoney(int money){
  6. this.money = money;
  7. }
  8. public abstract void study();
  9. }
  10.  
  11. interface A{
  12. public static final int i = 10;
  13. public abstract int getNum();
  14. }
  15.  
  16. interface B{
  17. public static String name = "InterfaceB";
  18. public abstract String getName();
  19. }
  20.  
  21. class Son extends Father implements A,B{
  22. public int getNum(){return i;}
  23. public String getName(){return name;}
  24.  
  25. public void study(){
  26. System.out.println("I am study");
  27. }
  28. }
  29.  
  30. public class Ext6{
  31. public static void main(String args[]){
  32. Son son = new Son();
  33. System.out.println(son.getName());
  34. System.out.println(son.getNum());
  35. son.study();
  36.  
  37. }
  38. }

编译运行结果:

相关代码存放在github,可以下载https://github.com/zzb2760715357/100ask

第2课第3节_Java面向对象编程_继承性_P【学习笔记】的更多相关文章

  1. 第2课第4节_Java面向对象编程_多态性_P【学习笔记】

    摘要:韦东山android视频学习笔记  面向对象程序的三大特性之继承性: 1.向上转换:只能定义被子类覆写的方法,不能调用在子类中定义的方法. class Father { private int ...

  2. 第2课第7节_Java面向对象编程_内部类_P【学习笔记】

    摘要:韦东山android视频学习笔记  1.什么是内部类:在类的内部定义一个类,内部类可以访问类的私有属性 class Outer{ ; class Inner{ public void print ...

  3. 第2课第5节_Java面向对象编程_异常_P【学习笔记】

    摘要:韦东山android视频学习笔记  java的异常处理的原则如下: 1.我们先写一个没有对异常处理的程序,在进行除法运算的时候,除数是非零的话,运行时没有问题的,但是除数为零的时候,运行就会有问 ...

  4. 第2课第2节_Java面向对象编程_封装性_P【学习笔记】

    摘要:韦东山android视频学习笔记  面向对象程序的三大特性之封装性:把属性和方法封装在一个整体,同时添加权限访问. 1.封装性的简单程序如下,看一下第19行,如果我们不对age变量进行权限的管控 ...

  5. 第2课第1节_Java面向对象编程_类的引入_P【学习笔记】

    摘要:韦东山android视频学习笔记 1. 面向对象编程的引入,我们先写一个简单的程序输出张三,李四的名字.代码如下,假如,现在我们要在名字前面添加籍贯广东,那样岂不是每个printf语句都得修改添 ...

  6. 第2课第6节_Java面向对象编程_包和权限_P【学习笔记】

    摘要:韦东山android视频学习笔记  1.使用package定义编译的时候存放的位置 package a.b.c.d; public class Package { public static v ...

  7. 类和对象:面向对象编程 - 零基础入门学习Python037

    类和对象:面向对象编程 让编程改变世界 Change the world by program 经过上节课的热身,相信大家对类和对象已经有了初步的认识,但似乎还是懵懵懂懂:好像面向对象编程很厉害,但不 ...

  8. .net 4.0 面向对象编程漫谈基础篇读书笔记

    话说笔者接触.net 已有些年头,做过的项目也有不少,有几百万的,也有几十万的,有C/S的,也有B/S的.感觉几年下来,用过的框架不少,但是.net的精髓一直没有掌握.就像学武之人懂得各种招式,但内功 ...

  9. Python 进阶_OOP 面向对象编程_组合与继承

    #目录 前言 组合 派生 通过继承来覆盖重载方法 最常用的重载场景实例方法的重载 从标准类中派生类方法的重载 前言 我们定义一个类是希望能够把类当成模块来使用,并把类嵌入到我们的应用代码中,与其他的数 ...

随机推荐

  1. iview表单数字验证

    sort: [ {required: true, message: '请填写栏目排序', trigger: 'blur'}, {type: 'number', message: '请输入数字', tr ...

  2. MySQL Hardware--RAID级别查看

    MegaCli查看RAID级别: ## 查raid卡信息(生产商.电池信息及所支持的raid级别) /usr/local/sbin/MegaCli -AdpAllInfo -aALL |grep -E ...

  3. c# 搜索字符串

  4. docker到底比LXC多了些什么

    看似docker主要的OS级虚拟化操作是借助LXC, AUFS只是锦上添花.那么肯定会有人好奇docker到底比LXC多了些什么.无意中发现 stackoverflow 上正好有人问这个问题, 回答者 ...

  5. iptables和lvs

    解压密码6Hai7Gf8   路由转发 0是不转发,1是转发 [root@m01 roles]# cat /proc/sys/net/ipv4/ip_forward 0 临时生效 [root@m01 ...

  6. VMware安装ubantu

    下载ubantu镜像文件: http://mirror.pnl.gov/releases/xenial/ http://mirrors.melbourne.co.uk/ubuntu-releases/ ...

  7. 2013.6.28 - KDD最后一天

    今天收到中秋的邮件.KDD结果出来了,Zhongqiu Wang & Jingwen Huang 15th/561.  

  8. 转 C#关于DateTime得到的当前时间的格式和用法

    DateTime.Now.ToShortTimeString() DateTime dt = DateTime.Now; dt.ToString();//2005-11-5 13:21:25 dt.T ...

  9. IDEA使用入门设置(从入门到放弃)

      激活 1:设置JDK路径 2:设置maven环境 3:设置tomcat 4:设置快捷键与eclipse相同 4.1:设置字体大小 5:创建maven  java 工程并进行编译打包等操作 6:创建 ...

  10. attention speech recognition

    Attention:是一种权重向量或矩阵,其往往用在Encoder-Decoder架构中,其权重越大,表示的context对输出越重要.计算方式有很多变种,但是核心都是通过神经网络学习而得到对应的权重 ...