华恩JAVA班第23天

华恩JAVA班第23天

 

继承知识点汇总:

继承的概述:
1.提高了代码复用性,简化了代码
2.让类与类之间产生了继承关系,才有了后面的多态性的存在
注意:千万不要为了获取其他类的功能简化代码,而建立继承关系
必须要类与类之间存在继承关系,继承关系:is a
class Person{
 String name;
 int age;
}

class Student extends Person{
 void study(){
  System.out.println("学习");
 }
}

class Teacher extends{
 void teath(){
  System.out.println("教书");
 }
}

public class Test{
 public static void main(String[] args){
 }
}

 

继承的概述:
子类拥有父类的成员,子类不能拥有父类中被private修饰后的成员

java多层继承 在多层继承中最下层的子类拥有整个继承体系的成员,
最上层的父类里面定义所有子类的共性描述

java中不支持多继承。因为多继承存在安全隐患,当多个父类定义了
相同的成员,子类对象不确定运行那一个。
但Java保留了这种机制,并用了另一种方式来体现, 多实现

class A{
 String name;
 void show(){}
}
class B{
 int age;
 void show(){}
}
class C extends A,B{

}

public class Test1{
 public static void main(String[] args){
  C c = new C();
  c.show();
 }
}

 

子父类成员特点
成员:
1.成员变量
2.函数
3.构造函数

变量:
this 代表当前对象的引用 this.变量 首先在本类中找所需要的这个变量,
如果没有找到再去父类中找。
super 用于访问当前对象的父类成员,super.变量 直接在父类中找所需变量

class Person{
 String name = "李四";
}

class Student extends Person{
 String name = "张三";
 void show(){
  System.out.println(this.name); //输出张三
  System.out.println(super.name); //输出李四
 }
}

public class Test2{
 public static void main(String[] args){
  Student stu = newStudent();
  stu.show();
 }
}

 

 

当子类中出现和父类中一样的函数时,当子类对象调用该函数,
运行的是子类中的函数,这种情况就是函数的另一种特性:重写(覆盖)

class Animal{
 String type;
 public void run(){
  System.out.println("跑步中");
 }
}

class Cat extends Animal{

}

class Dog extends Animal{
 public void run(){
  String type = "大黄狗";
  System.out.println(type+"哼着歌跑步中");
 }
}

public class Test4{
 public static void main(String[] args){
  Cat cat = new Cat();
  cat.run();
  Dog dog = new Dog();
  dog.run();
 }
}

 

 

有了子父类之后构造函数的特点:
在对子类对象进行初始化的时候,
父类的构造方法也会运行,那是因为子类的构造函数默认第一行
有一条隐式的语句super();

子类每个构造方法第一行都有一个隐式的 super();

class Fu{
 String name;
 Fu(){
  System.out.println("父类构造方法");
 }
 Fu(String n){
  this.name = n;
  System.out.println("父类有参构造方法");
 }
}

class Zi extends Fu{
 Zi(){
  System.out.println("子类构造方法");
 }
 Zi(String n){
  super("小红");
  this.name = n;
  System.out.println(n+"子类有参构造方法");
 }
}

public class Test6{
 public static void main(String[] args){
  Zi z = new Zi();
  Zi z1 = new Zi("小李");
 }
}

 

class Student{
 String name;
 int age;
 String degree;

 Student(String name,int age,Stringdegree){
  this.name = name;
  this.age = age;
  this.degree = degree;
 }
}

class Undergraduate extends Student{
 String specialty;
 Undergraduate(String name,int age,Stringdegree,String specialty){
  super(name,age,degree);
  this.specialty =specialty;
 }
 void show(){
  System.out.println(name+"\n"+age+"\n"+degree+"\n"+specialty);
 }
}
class Graduate extends Student{
 String direction;
 Graduate(String name,int age,String degree,Stringdirection){
  super(name,age,degree);
  this.direction =direction;
 }
 void show(){
  System.out.println("\n"+name+"\n"+age+"\n"+degree+"\n"+direction);
 }
}

public class Test7{
 public static void main(String[] args){
  Undergraduate one = newUndergraduate("ziuginzeon",21,"本科","计算机科学与技术");
  one.show();
  Graduate two = newGraduate("ziuginzeon",21,"本科","JAVA");
  two.show();
 }
}

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值