No2_2.接口继承多态_Java学习笔记_继承

***类的继承***
1.继承的实现extends
2.[修饰符] class 子类名 extends 父类名{}
3.修饰符一般为:public abstract final
4.重写是指父子类之间的关系,子类的方法名与父类的方法名相,那么子类就不能继承父类的方法,称子类的方法重写了父类的方法。
5.重写体现了子类补充或者改变父类方法的能力。通过重写,可以使一个方法在不同的子类中表现出不同的行为;
6.重写民可以称为覆盖;

***使用super关键字***
1.子类可以继承父类的非私有成员变量和成员方法(非private)作为自己的成员变量和方法;
2.如果子类与父类成员变量同名,子类不能继承父类的成员变量,称:子类的成员变量隐藏了父类的成员变量;
3.如2.换成方法,称:子类成员方法重写了父类的成员方法;
4.这时,想在子类中访问父类中被隐藏的成员方法或变量,就可以用super;
5.两种用途:
a.调用父类的构造方法;子类可以调用由父类声明的构造方法,必须使用super调用;【必须写在构造方法体中吗???是的】
super([参数列表]);
应该为构造函数中的第一条语句;

b.操作被隐藏的成员变量和被重写的成员方法;
super.成员变量名
super.成员方法名([参数列表])

问题:super. 可以不在构造方法中使用吗

  1 /**
  2  * @author: liu_y
  3  * @Date: 2016年7月3日
  4  * @Title:继承、继承中的重写
  5  */
  6 /**********继承的实现**************/
  7 class Bird{
  8     String color="white";
  9     String skin="羽毛";
 10 }
 11 class Pigeon extends Bird{
 12         public void pColor(){
 13             Pigeon p=new Pigeon();
 14             System.out.println("鸽子继承的鸟类的属性,颜色是:"+p.color);
 15     }
 16 }
 17 /**********继承中的重写**************/
 18 class Animal{
 19     public Animal(){
 20     }
 21     public void cry(){
 22         System.out.println("动物发出叫声!");
 23     }
 24 }
 25 class Dog extends Animal{
 26     public Dog(){
 27     }
 28     public void cry(){
 29         System.out.println("狗发出“汪汪汪”的叫声!");
 30     }
 31 }
 32 class Cat extends Animal{
 33     public Cat(){
 34     }
 35     public void cry(){
 36         System.out.println("罗小黑发出“喵喵喵”的叫声!");
 37     }
 38 }
 39 class Sheep extends Animal{
 40
 41 }
 42 /**********使用super关键字**************/
 43 class Beast{
 44     String skin;
 45     public int age;
 46     public Beast(){
 47     }
 48     public Beast(String skin){
 49         this.skin=skin;
 50     }
 51     public void move(){
 52         System.out.println("跑");
 53     }
 54     public String getSkin(){
 55         return skin;
 56     }
 57 }
 58 class Tiger extends Beast{
 59     public Tiger(){
 60         super("条纹");            //使用父类的带参数的构造方法,必须写在构造方法体中吗???
 61         super.age=8;
 62         super.move();
 63     }
 64
 65     public int getAge(){
 66         return super.age;
 67     }
 68
 69
 70 }
 71
 72 public class Hello2Extends {
 73
 74     public static void main(String[] args) {
 75         // TODO Auto-generated method stub
 76         //继承的实现
 77         System.out.println("继承的实现:");
 78         Pigeon p=new Pigeon();
 79         p.pColor();
 80
 81         //继承中的重写
 82         System.out.println("\n继承中的重写");
 83         Dog dog=new Dog();
 84         Cat cat=new Cat();
 85         Sheep sheep=new Sheep();
 86         System.out.println("执行dog.cry()时的输出结果:");
 87         dog.cry();
 88         System.out.println("执行cat.cry()时的输出结果:");
 89         cat.cry();
 90         System.out.println("执行sheep.cry()时的输出结果:");
 91         sheep.cry();
 92
 93         //使用super关键字
 94         System.out.println("\n使用super关键字");
 95         Tiger tiger=new Tiger();
 96         System.out.println("老虎的皮肤是:"+tiger.getSkin()+";年龄是:"+tiger.getAge());
 97
 98     }
 99
100 }

输出结果:

 1 继承的实现:
 2 鸽子继承的鸟类的属性,颜色是:white
 3
 4 继承中的重写
 5 执行dog.cry()时的输出结果:
 6 狗发出“汪汪汪”的叫声!
 7 执行cat.cry()时的输出结果:
 8 罗小黑发出“喵喵喵”的叫声!
 9 执行sheep.cry()时的输出结果:
10 动物发出叫声!
11
12 使用super关键字
13 跑
14 老虎的皮肤是:条纹;年龄是:8
时间: 2024-10-24 14:46:35

No2_2.接口继承多态_Java学习笔记_继承的相关文章

No2_1.接口继承多态_Java学习笔记_接口

接口.继承与多态 1.继承和多态是面向对象开发语言中的重要一个环节,使用得当,可以将整个程序的架构变得非常有弹性,减少代码冗余: 2.继承:复用定义好的类: 3.多态:可以动态调整对象的调用,降低对象的依存关系: 4.接口:Java中类可以实现多个接口,被用来建立类与类之间的标准: ***接口***1.接口的目的:Java语言只支持单继承,即一个类只能有一个父类.实际应用中,经常需要多继承解决问题,为解决该问题,提供接口实现类的多重继承:2.接口定义:与类的定义类似,接口的声明和接口体:[修饰符

No2_4.接口继承多态_Java学习笔记_经典案例

1 import java.util.ArrayList; 2 import java.util.Collections; 3 import java.util.List; 4 5 /** 6 * @title 接口继承多态的经典范例 7 * @author 作者:sunshine yaqingl 8 * @date 创建时间:2016年7月6日 下午5:27:39 9 */ 10 11 //使用Comparable接口自定义排序 12 class Employee implements Com

No2_3.接口继承多态_Java学习笔记_多态

多态: 1 /** 2 * 3 * @author 作者:sunshine 4 * @date 创建时间:2016年7月4日 下午5:22:19 5 */ 6 7 class Calculate{ 8 final float PI=3.14f; 9 //求圆形的面积 10 public float getArea(float r){ 11 float area=PI*r*r; 12 return area; 13 } 14 //求矩形的面积 15 public float getArea(flo

Objective-C学习笔记_继承、初始化方法、便利构造器

一.继承 继承的上层:父类,继承的下层:子类.继承是单向的,不能相互继承.继承具有传递性:A继承于B,B继承于C,A具有B和C的特征和?为.子类能继承父类全部的特征和行为. 例题 打僵尸.需求: 1.定义普通僵尸类: 实例变量:僵尸总血量.僵尸每次失血量. 方法:初始化方法(总血量).被打击失血.死亡. 2.定义路障僵尸类: 实例变量:僵尸总血量.僵尸每次失血量,道具,弱点. 方法:初始化方法(总血量).被打击失血.失去装备.死亡. 3.定义铁桶僵尸类: 实例变量:僵尸总血量.僵尸每次失血量,道

No2_5.类的高级特性_Java学习笔记_抽象类和成员内部类

一.抽象类1.所谓抽象类,只声明方法的存在而不去实现它的类:2.抽象类不能被实例化,即不能实现其对象:3.abstract class 类名{ 类体 }4.包含一个或多个抽象方法的类必须声明成抽象类:5.abstract <方法返回值类型> 方法名(参数列表) 二.内部类1.如果在一个类中再定义一个类,就将在类中定义的那个类称为内部类:2.内部类分为成员内部类,局部内部类以及匿名内部类:3.成员内部类: a.可以在内部类中直接存取其所在类的私有成员变量: b.外部类不可以直接访问内部类成员变量

黑马程序员_IOS开发_Objective-C学习笔记_继承和分类

1.什么是继承 继承是面向对象程序的三大特征之一,意思是基于一个类的基础,定义一个新类. 被继承的类成为父类,新类成为子类. 继承的实际例子有许多.例如,一个儿子继承了他父亲,那么他就继承了他父亲的财产. 例如基类是Person,那么我们可以继承Person这个类,产生新的子类Student,Teacher 在这里Person是Student类和Teacher类的父类. 引入继承的概念是有许多好处的: *能够抽取重复代码 *建立了类和类之间的联系 *不改变原来模型的基础上,能够扩展出新的方法 2

2016年4月2日_JAVA学习笔记_下午

1.一个重要的知识点:子类不能直接访问超类中的私有成员. 2.如果子类的构造器没有显式的调用超类的构造器,则将自动的调用超类默认的构造器(无参数).如果超类没有无参数构造器,并且子类构造器又没有调用超类的其他有参数构造器,那么将编译失败. 3.一个对象变量可以指示(引用)多种实际类型的现象被称为多态.在运行时能够自动选择调用哪个方法的现象称为动态绑定(调用的是实际引用对象的方法). 4.在一个包中直接运行对应的.class文件是不可行的.只能在包所在路径运行 java myBao.myClass

2016年4月2日_JAVA学习笔记_上午

1.昨天晚上忘记发布就直接关机了,算了.本就没写多少. 2.包这个小节还有类路径看书看的我一头雾水. 3.昨天看毕老师视频时讲到了类的四个权限等级,从封装性最好到最开放依次是,private,默认,protected,public. private:仅允许当前类进行访问: 默认:允许当前类和当前包进行访问: protected:允许当前类和当前包,以及其他包中的子类: public:允许所有人进行访问 4.在shell命令运行java时,需要注意类路径,如果当前目录下没有找到,会在classpa

2016年4月16日_JAVA学习笔记_第六章克隆

1.克隆也就是创建一个变量的拷贝,两者相互独立. person p = new person(); person p1 = p; //仅仅是重新创建另外一个变量,引用的是同一个东西 person p_clone = p.clone();//创建上一个变量的克隆,两者没有关系 2.