对类的继承的基本认识

一、对构造器的理解

构造器的作用

  1、构造对象:方法名跟类名相同,创建一个对象去连接内存里堆的地址找到属性跟方法并调用。构造器的定义格式:public 类名(){}

public class Teacher{

 String name;

     public Teacher(){

      System.out.println("执行了老师的构造方法");

    }

}

2、初始化对象

 

publicclass Test{

     publicstaticvoid main(String[] args) {        

  //创建对象,调用构造方法       

 Teacher tea = new Teacher("");                  

   Teacher tea1 = new Teacher();   

      tea.name = "张三";      

      tea1.name = "李四";       

       tea = tea1;        

       tea1.name = "王五";               

         System.out.println(tea.name);        

          System.out.println(tea1.name);       

     }

}

栈存储变量,堆存储对象,都有相应的内存地址。

  tea通过调用老师类的构造器找到了它的名字属性“张三”。

  tea1也通过调用构造器找到了它的名字属性“李四”。

执行“tea=tea1" tea的属性所在的内存里堆的地址被tea1的地址所替代,所以tea就找到了tea1的地址获取了tea1的属性,所以此时打印输出的是两个“李四”。

tea1的属性有了一个的新的地址,tea又会去找tea1的新地址,此时输出两个“王五”。

二、方法重载
同一个类中,多个方法的方法名相同,参数不同(类型、个数、顺序)的方法互为重载方法
作用:给同一个行为提供不同的执行过程
构造方法也可以重载

 public Teacher(){
  System.out.println("执行了老师类的构造方法");
 }
 public Teacher(String n){
  name = n;
 
 public void teach(int a){
  System.out.println("执行教学方法1");
 }
 public void teach(){
  System.out.println("执行教学方法2");
 }
 public void teach(String n){
  System.out.println("执行教学方法3");
 }
 public void teach(String n,int a){
  System.out.println("执行教学方法4");
 }
 public void teach(int a,String n){
  System.out.println("执行教学方法5");
 }
}

由于方法参数相同最后打印的是:执行教学方法3

三、类继承
子类继承父类的所有的非私有属性和方法
格式 : public class 子类名  extends  父类名{}

创建一个学生类,它的属性跟方法都可以被继承

public class Student {
 public String name;
 public int age;
 
 public void study(){
  System.out.println("学生学习");
 }
 
}

MiddleSutudent子类可以从父类Student继承它的名字,年龄等属性和study方法

public class MiddleStudent  extends Student{
 
}

四、方法重写

子类继承父类的前提,然后子类定义一个和父类相同的(方法名,参数,返回类型)方法

区别于方法重载

构造函数是不能被继承的


五、自动转型

定义:创建子类的对象,然后自动转型为父类的类型
格式:父类类名  对象名  = new  子类类名();
六、多态性

体现:多个同一种类型的对象,执行同一个方法,执行的过程不一样(有区别)

为什么会有多态现象???自动转型+方法重写    
自动转型+方法重写前提  继承


七.方法分类(构造方法、普通方法、抽象方法)
构造方法:public 类名(){}
普通方法:public 返回类型  方法名(参数){}
抽象方法:public abstract 返回类型 方法名(参数);

八.类的分类(普通类、抽象类、接口)
普通类:public class 类名{}
  1.只能有普通方法和构造方法,一定不能有抽象方法
  2.可以创建对象
  3.属性可以是常量(static final),也可以是变量
抽象类:public abstract class 类名{}
  1.三种类型的方法都可以存在
  2.不能创建对象
  3.属性可以是常量(static final),也可以是变量
接口:public interface 类名(){}
  1.只能有抽象方法,普通方法和构造方法不存在
  2.不能创建对象
  3.属性一定是常量(static final)


九.接口继承
接口和抽象类的作用是用来当父类被继承的,抽象方法是用来指导子类重写(实现)的
关键子:implements
格式:public class 子类类名  implements 接口名{
  //重写父类的所有的抽象方法
 }
接口无非就是领导,只是指导开发



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值