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

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

继承的关键字: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();调用该方法的当前对象.

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

Java学习笔记---继承和super的用法的更多相关文章

  1. java学习笔记-继承中super关键字

    背景: 在java继承的概念中我们得知,被声明为私有的类成员对所属的类来说仍然是私有的.类之外的任何代码都不能访问,包括子类. super关键字的两种用法: 1.用于调用超类的构造函数: 2.用于访问 ...

  2. Java学习笔记--继承和多态(中)

    1.通过继承来开发超类(superclass) 2.使用super 关键词唤起超类的构造方法 3.在超类中覆盖方法 4.区分override和overload 5.在Object类中探索toStrin ...

  3. java学习笔记 --- 继承

    继承 (1)定义:把多个类中相同的成员给提取出来定义到一个独立的类中.然后让这多个类和该独立的类产生一个关系,    这多个类就具备了这些内容.这个关系叫继承.  (2)Java中如何表示继承呢?格式 ...

  4. Java学习笔记--继承和多态(下)

    1.通过继承来开发超类(superclass) 2.使用super 关键词唤起超类的构造方法 3.在超类中覆盖方法 4.区分override和overload 5.在Object类中探索toStrin ...

  5. Java学习笔记--继承和多态(上)

    1.通过继承来开发超类(superclass) 2.使用super 关键词唤起超类的构造方法 3.在超类中覆盖方法 4.区分override和overload 5.在Object类中探索toStrin ...

  6. Java学习笔记——继承、接口、多态

    浮点数的运算需要注意的问题: BigDecimal operand1 = new BigDecimal("1.0"); BigDecimal operand2 = new BigD ...

  7. Java学习笔记31(IO:Properties类)

    Properties类,表示一个持久的j集,可以存在流中,或者从流中加载 是Hashtable的子类 map集合的方法都能用 用途之一:在开发项目中,我们最后交给客户的是一个编译过的class文件,客 ...

  8. java学习笔记6--类的继承、Object类

    接着前面的学习: java学习笔记5--类的方法 java学习笔记4--类与对象的基本概念(2) java学习笔记3--类与对象的基本概念(1) java学习笔记2--数据类型.数组 java学习笔记 ...

  9. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

随机推荐

  1. WIN_2003_SP2.iso VMware 不能进行网络访问的处理

    1.打开IE发现不能上网的问题 ping命令 发现确实是网络不通: 2.关闭虚拟机设置网络适配器 3.ping命令验证是否设置成功 4.打开IE访问百度

  2. java反射 实例

    首先介绍几个概念: 1.Java反射的概念 反射含义:可以获取正在运行的Java对象. 2.Java反射的功能 1)可以判断运行时对象所属的类 2)可以判断运行时对象所具有的成员变量和方法 3)通过反 ...

  3. Linux下多核环境Erlang的SMP測试

    目标 (1)       了解在多核cpu环境下,erlang并发进程调度对各个cpu核负载的影响: (2)       Erlang虚拟机的内存添加机理: (3)       Erlang进程的调度 ...

  4. [置顶] viewPager控制滑动速度和时间

    遇到如下问题:viewpager滑动时如果想跳过很多条直接到最后一条,中间会黑屏.黑屏是因为中间的view没有加载出来的缘故. stackOverflow上看到的解决方案,在这里记录一下, publi ...

  5. jquery的clone办法bug修复

    发现测试,textarea和select的jquery的clone有问题的方法,textarea和select值clone时间会输.这是发现jquery一个bug,上不了的能够看下代码.比較简单.就是 ...

  6. Android中绘制圆角矩形图片及任意形状图片

    圆角矩形图片在苹果的产品中很流行,相比于普通的矩形,很多人都喜欢圆角矩形的图片,因为它避开了直角的生硬,带来更好的用户体验,下面是几个设计的例子: 下面在Android中实现将普通的矩形图片绘制成圆角 ...

  7. 引用枚举进行对比时 enum需强制转换

    枚举类 public enum MailRead { /// <summary> /// 未读 /// </summary> UNREAD=0, /// <summary ...

  8. 搭建MyBatis框架

    一.开发环境 1.JDK 1.6.0_22 2.MyEclipse 10.7.1 3.Oracle_10g_10.2.0.4 注:各软件版本不是必须的,正常任意版本都行,文件较大就不附上下载地址了,推 ...

  9. DevExpress.GridControl.gridView的一些注意

    1.DevExpress控件组中的GridControl控件不能使横向滚动条有效.现象:控件中的好多列都挤在一起,列宽都变的很小,根本无法正常浏览控件单元格中的内容. 解决: gridView1.Op ...

  10. Java基础笔记-String类2

    StringBuffer 特点: 是字符串缓冲区. 是一个容器,其长度可变,可以操作添加多个数据类型. 最后通过toString方法变成字符串. 被final锁修饰,因此不能被继承. 存储: 方法1: ...