Java学习笔记---继承和super的用法

 

自从换了个视频教学,感觉比原来那个好多了,就是学校网速太渣,好多视频看一会卡半天,只能先看看已经下载的了.

不过也好,虽然不能从开始开始重新开,但是已经看过一次,在看一次也是好的,就当巩固学习了.

 

继承的关键字:extends

格式如下: class 子类名 extends父类名{

...

}

例如 学生是继承人类这一父类的.

class student extends person{

...

}

如果一个类的声明没有使用关键字extends,则这个类默认是继承Object类的.Object是所有类的父类.Object是java.lang包中的类.

当一个子类继承了一个父类时,子类可以调用父类中的所有方法和成员变量.子类也可以单独自己声明方法或者变量.

下面的代码创建了4个class.分别是Dog,Cat,Animal和包含主函数的Main类.其中Dog和Cat是继承父类Animal的.

 

Cat继承Animal类:

package com.cnblogs;

public class Cat extends Animal{  

//不带参数的默认构造器

 public Cat(){   

//super();必须出现在构造方法的首行.   //this();也如此.  

     super();

 // super("XX",10);  该代码表示调用父类带参的构造器  

 System.out.println("Cat构造器");  }

 /* public String name;

   public int age;  

   public void walk(){

    System.out.println("Cat....walk");  

}

 public void sleep(){

    System.out.println("Cat....sleep");

 }  */

 //注解提示

@Override  

public void how(){

    System.out.println(name +" "+ "Cat....miaomiao");  

//super 强制调用父类的show()方法法.

//如果没有super,show();是this.show();的默认写法.   

//步骤是:先调用子类的show()方法.子类如果没有show方法才调用父类的show()方法  

    super.show();

 }

 public void show(){

    System.out.println(name +" "+ "Cat----->show");  

}

}

声明Dog类:

package com.cnblogs;

public class Dog extends Animal {  

/*public String name;

   public int age;  

   public void walk(){

      System.out.println("Dog....walk");  

}  

   public void sleep(){  

     System.out.println("Dog....sleep");

 }  */

   public void how(){  

     System.out.println(name +" "+ "Dog....wangwang");  }

}

 

创建一个Animal的父类:

package com.cnblogs;

//Animal不写继承就是默认继承Object类. //抽象类不能new.传入的是子类的实例对象.

public abstract class Animal extends Object{  

    public String name;

    public int age;  

//默认的不带参的构造器

 public Animal(){  

    this("baobao",2);

//this();调用的是下面带参的Animal的方法   

    System.out.println("Animal--->()");

 }  

//带参的构造器.给属性赋初始值

public Animal(String name,int age){   

    this.name = name;  

    this.age = age;  

    System.out.println("Animal--->(name,age)");

 }  

public void walk(){

    System.out.println(name + "---->walk");   

    sleep();

    how();

//this.show 调用的是子类的show()方法,如果子类没有show()方法.在调用父类的show()方法.  

    this.show();

 }  

 public void sleep(){

    System.out.println(name + "---->sleep");

 }  

//抽象方法.

 public abstract void how();  

 public void eat(){

    System.out.println(name + "---->Eat");

 }  

 public void play(){ 

    System.out.println(name + "---->Play");

 }

 public void show(){

    System.out.println(name +" "+ "Animal---->show");

}

}

 Main类(包含主函数):

 

package com.cnblogs;

 

public class Main {

 

 public static void main2(String[] args) {  

 //生成一个cat对象

    Cat cat = new Cat();  

    cat.name ="xiaohua";  

    cat.age = 3;  

    cat.walk();   

    cat.how();   

//生成一个dog对象  

    Dog dog = new Dog();  

    dog.name = "xiaomei";   

    dog.age= 3;  

    dog.walk();  

    dog.eat();  

    dog.how();  

 //调用的是调出来的对象  

    Animal animal = new Cat();

    animal.name = "HH";

  //调用的是子类Cat()的how()方法.   

    animal.how();   

    Animal animal2 = new Dog();

    animal2.name = "XX";  

 //调用的是子类Dog()的how方法  

    animal2.how();      

    animal.walk();     

 //GetMsg方法要求传入的是子类cat,所以传入的必须是cat,而不能是animal.  

    GetMsg(cat);  

    GetMsg(dog);  

    GetMsg(animal2);

 }  

/* public static void GetMsg(Cat cat){

  cat.how();  

}*/  

//将子类的对象传入给父类的引用   //比上面的传入单独的cat灵活,一般使用下面这种方法  

public static void GetMsg(Animal animal){

    animal.how();   

}  

/** *1. new一个对象以后先调用子类Cat的第一个方法,运行super();调用父类Animal的第一个方法   

  *2. 父类中的构造方法执行this();方法,this方法又调用Animal带参数的方法并输出;在返回不带参的构造器执行this();下面的输出语句   

  *3. 在返回子类Cat中执行super();下面的语句,输出"Cat构造器"   

  *4. 接着animal.how()调用new出来的对象 cat的how()方法   

  *5. 执行子类Cat()方法中的how()方法,并输出.   

  *6. 接着在运行how()方法中的super().show;然后调用父类Animal的show()方法.并输出相应的结果.    * */  

public static void main(String [] args){  

    Animal animal = new Cat();   

    animal.how();   }

}

 

super();调用父类的构造器,方法和属性.

this();调用该方法的当前对象.

 

今天博客园居然不能插入代码块,不知道出什么问题只能自己手写,写了半天.看的头都晕了.

转载于:https://www.cnblogs.com/jerryho/p/4417474.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/375165.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html适配Anroid手机

本文全然是翻译与总结谷歌官方的教程,已确保文档的正确性。 免得大家被五花八门的其它的资料弄混了,也没有系统行的学习。 一、设置窗体尺寸和适配屏幕分辨率 谷歌官方文档提到两个大的方面。 1.Viewport视图窗体 这个是html中设置的。主要是设置高度和宽…

算术运算与逻辑运算

逻辑运算又称布尔运算,取值只有两个真或假,二进制数1和0在逻辑上可以代表真与假,是与否 算术运算...小学就开始学的了 两者的区别在与逻辑运算是按位进行的,位与位之间没有进位或借位.逻辑加法(OR)OR OPRD1,OPRD2 ;OPRD1<--OPRD1 OPRD2 算术加法(ADD)ADD OPRD1,OPRD2 ;O…

Webpack 入门指迷--转载(题叶)

最近看到这个东西&#xff0c;一头雾水。看了一些资料了解了Webpack概念&#xff0c;大体是webpack 是一个模块绑定器&#xff0c;主要目的是在浏览器上绑定 JavaScript 文件。 看到题叶写的一篇介绍&#xff0c;写的很好&#xff0c;转载连接http://segmentfault.com/a/119000…

非操作指令NOT

否操作指令NOT(又称逻辑非运算)01 ;非0等于110 ;非1等于0NOT OPRD ;该指令把操作数OPRD取反然后送回OPRDmov ah,11111111B ;FFHnot ah ;执行后AH0Hmov ah,11110000B ;F0Hnot ah ;执行后AH00001111B 0FH

jquery的动画学习--jquery权威指南

前面的fadeIn和fadeOut还有fadeTo以及sildeToggle还有sildeUp\sildeDown还有toggle还有show、hide等都经常用&#xff0c;就不再手写了&#xff0c;需要注意的是fadeTo的合理应用&#xff0c;可以规定opactiy的具体数值&#xff0c;另外各个效果的回调函数可以多用用。$("…

防止Button按钮重复点击

背景&#xff1a;在测试中&#xff0c;测试MM总喜欢连续重复点击Button&#xff0c;如果click事件的处理业务&#xff0c;稍微有些耗时&#xff0c;或者设备反应比较慢时&#xff0c;就会响应2遍处理&#xff0c;导致错误的现象出现。 前提&#xff1a;click事件的处理业务&…

8086交换指令XCHG

XCHG OPRD1,OPRD2;实现OPRD1与OPRD2之间数据交换;OPRD1,OPRD2同时是字节或字操作数, MOV AX,1 MOV BX,2 XCHG AX,BX ;执行后AX2,BX1

[傅里叶变换及其应用学习笔记] 二十四. 级联,脉冲响应

我们上节课学习了 在离散有限维空间中&#xff0c;任何线性系统都是通过矩阵间的相乘得到的在连续无限维空间中&#xff0c;任何线性系统都是通过对核函数的积分得到的脉冲响应&#xff08;impulse response&#xff09; 级联线性系统&#xff08;Cascading linear system&…

WPF如何实现TreeView节点重命名

我们经常看到一些软件比如酷狗音乐&#xff0c;在对列表右键进行重命名的时候&#xff0c;当前列表会泛白并且进入可编辑状态&#xff0c;当我们更改完成后就会并进入非编辑状态&#xff0c;这些具体是怎么实现的呢&#xff1f;下面的方法也许会提供一些思路&#xff0c;下面的…

8086地址传送指令LEA

LEA REG,OPRD ;操作数OPRD必须是一个存储器操作数 LEA AX,IDATA ;把IDATA的偏移地址传送到AX寄存器中DATA SEGMENTIDATA DW 1,2,3,4 DATA ENDS CODE SEGEMNT BEG:MOV AX,OFFSET IDATA ;AXIDATA的偏移地址LEA AX,IDATA ;AXIDATA的偏移地址LEA AX,DS:[IDATA] ;把ds:[IDA…

Shell --- 批量修改文件后缀脚本

for f in *.$1; dofilenamebasename $fmv $f "${filename%.*}".$2; done; Usage:&#xff1a; rename suffix rename_suffix eg: rename dat txt > ls > a.dat > rename dat txt > ls > a.txt 转载于:https://www.cnblogs.com/RookieCoder/p/5140265.…

8086标志操作指令

标号传送指令LAHF 把FLAG低八位送入AH。不影响FLAG的任何位LAHF ;把CF,PF,AF,ZF,SF送入AH的相应位即0,2,4,6,7位SAHF 把AH送入FLAG低八位。根据AH中的内容FLAG的低八位受到影响,高位不受影响MOV AH,11111111B SAHF ;(执行后CF,PF,AF,ZF,SF等于1)PUSHF 把FLAG压入栈中。不影…

最大子序列和

一、遍历所有可能情况 (1234...N)所有可能子序列如下&#xff1a; 1&#xff1b;12&#xff1b;123...... 2&#xff1b;23&#xff1b;234...... ...... N 共N趟&#xff0c;没趟可能的情况由N&#xff0c;N-1...&#xff0c;1依次递减。 时间复杂度O(N3)的算法&#xff1a; i…

!--注释--和%--注释--%有什么区别

转载&#xff1a;版权所有&#xff1a;基础软件。作者邮箱&#xff1a;s.j.l.studiohotmail.com&#xff0c;sun.j.l.studiogmail.com。本文首发于 http://www.cnblogs.com/FoundationSoft。文章转载请保持此版权信息并注明出处。 使用ASP.NET编辑页面时&#xff0c;有两种注释…

团队开发——用户需求调研报告

用户需求调研报告 项目名称&#xff1a; 躲避小球 项目编号&#xff1a;001 调研主题&#xff1a; 用户需求 访谈时间&#xff1a;2015.4.10 调研地点&#xff1a; 石家庄铁道大学图书馆 访谈部门&#xff1a; 三个人行 参与人员&#xff1a; 林彦汝 1. 访谈目的 1、让用…

8086地址传送指令LDS,LES

LDS REG,OPRE;REG是一个16位寄存器,OPRD是一个存储器操作数,为双字项,高16位送入DS,低16位送入REG LDS BX,[SI](ds:si取得存储器中32位(双字),高16位作为段值送入DS中,低十六位送入指定的BX寄存器中)data segmentidata dd 12345678H data ends code segment assume cs:code,ds:…

设计模式(十五):解释器模式

一、定义 在设定环境中&#xff0c;定义一种规则或者语法&#xff0c;通过解释器来解释规则或者语法的含义. 二、实例&#xff1a;将 二十一 —> 21 2.1 设定我们的环境 Context public class Context{public string Input { get; set; }public int Output { get; se…

8086地址传送指令LEA,LDS,LES

LEA BX,[SI] ;BX<--DS:[SI]内存单元的偏移地址,与该单元中的数据无关 LDS BX,[SI] ;BX<--DS:[si]内存单元中的数据的低16位,DS<--内存单元中数据的高16位 LES BX,[SI] ;BX<--DS:[SI] ,ES<--DS:[SI2] 显然LDS和LES的操作数是32位的(两个字 四个字节 32位) 写个…

MySQL 5.7.10 免安装配置

# 配置环境&#xff1a;windows 64bit # 安装版本&#xff1a;mysql-5.7.10-win32&#xff08;zip archive版本&#xff09; 1. ZIP Archive版是免安装的&#xff0c;只需把mysql-5.7.10-win32.zip解压到安装目录即可。 2. 在D:\Program Files\mysql-5.7.10-win32文件夹下新建配…

Cacti安装教程

CentOS 6.0架设流量监控及集中日志系统第一章、cacti的安装1、 系统的基本设置2、 设置主机名3、 [rootlocalhost ~]# vi /etc/sysconfig/network4、 [rootlocalhost ~]# exit5、 重新登陆6、 [rootGZ-Cacti ~]#7、 安装screen后台运行程序yum -y install screen8、 安装优秀的…