Simp1e 发表于 2022-3-2 13:43

继承

本帖最后由 Simp1e 于 2022-3-2 13:48 编辑

(1).继承的基本语法结构
//父类
public class Animal {
    public String name;
    public int age;
    public void chi(){
      System.out.println(this.name+"吃好吃的");
    }
    public void zou(){
      System.out.println(this.name+"走别人的路,让自己憋屈");
    }
}
//子类1
public class Person extends Animal{

    public void shuo(){
      System.out.println(this.name+"哇啦哇啦的说");
    }

}
//子类2
public class Pig extends Animal{

    public void hengHeng(){
      System.out.println(this.name+"哼哼的叫");
    }
   
}
//调用
public class Test {
    public static void main(String[] args) {
      Person p = new Person();
      p.name = "花花";
      p.chi();
      p.shuo();
      p.zou();
      Pig px = new Pig();
      px.name = "张博";
      px.chi();
      px.hengHeng();
      px.zou();
    }
}
//注意:继承并不是为了解决某个问题,而是为了优化程序代码结构而出现的
//java面向对象三大基本特性:继承 封装 多态
(2).继承的一些特性a. Java的继承是单继承----一个子类只能拥有一个父类,但是一个父类可以拥有多个子类    问题:如果一个类真的需要继承多个类的,并且拿到它所继承的类的方法时应该怎么办?
b.Java允许传递继承结构,在传递继承中,父类的元素(属性和方法)可以通过继承关系无限的传递下去
c.Java中任何一个类都必须有一个父类,如果没有显示声明,则默认继承自Object   注意:Object类是一切类的父类(根类-JDK自带的 super class),所以Object类中的方法所有类都有
d.继承结构中,创建子类对象的同时也一并会创建其父类的对象,并且它遵循先父后子的创建过程,当传递继承关系出现时,则该结构也会一并创建其上上级的父类   
注意:   
①.Java中的继承关系不宜过于复杂   
②.虚拟机构建父类对象时,默认会使用父类空参构造方法创建对象,如果父类中没有空参构造方法,子类默认报错,但是可以在子类的构造方法中通过super来进行父类指定构造方法的调用进行解决   
③.super和this无法同时存在,故此一个类中无论怎么使用this去调用其构造方法,总会有一个构造方法不写this或显示声明调用super
e.继承中,并不是所有的元素都可以继承,有一些是可以继承,有一些是不可以继承的   
访问范围修饰符和程序包:      程序包:相当于文件夹,方便于我们对于程序代码的分类管理      
注意:使用带有包结构管理的类,那么如果使用类和被使用类在同一个包结构下,则可以直接使用,如果包结构不同,则使用类必须导包以后才能使用被实用类      
导包的手段:
(1).在被使用类前,添加完整的包结构说明
(2).通过import语句导包,如果有多个类需要导包,则可以使用*,的方式来简化导包过程
(3).package和import同时出现时,package语句在import语句之前      
命名规范:(1).见名知意 (2).包的层级命名[.[具体的公司名].[项目名]]                              com.oracle.oasys.具体的功能包名      访问范围修饰符:      public > protected > 默认 > private(3).重写当父类中某一些方法无法满足特定子类的需要时,那么该子类需要对某些方法进行重写//父类
public class Animal {
    public String name;
    public int age;
    public void chi(){//父类的等待被重写的方法
      System.out.println(this.name+"吃好吃的");
    }
    public void zou(){
      System.out.println(this.name+"走别人的路,让自己憋屈");
    }
}
//会产生重写的子类
public class Person extends Animal{
    public void shuo(){
      System.out.println(this.name+"哇啦哇啦的说");
    }
    public void chi(){//子类重写以后的方法
      System.out.println("我想吃海鲜,我想吃烧烤,我想吃各种好吃的!!!!");
    }
}
//没有产生重写的子类
public class Pigextends Animal{
    public void hengHeng(){
      System.out.println(this.name+"哼哼的叫");
    }
}
//注意:重写仅仅影响重写所发生的子类,对于其父类和其他未重写的子类不会产生影响重写和重载的区别

Hmily 发表于 2022-3-2 15:23

@Simp1e 你这是自己写的吗?还是复制来的?不要一下刷这么多主体,这种完全可以合并到一起。

Simp1e 发表于 2022-3-4 17:18

Hmily 发表于 2022-3-2 15:23
@Simp1e 你这是自己写的吗?还是复制来的?不要一下刷这么多主体,这种完全可以合并到一起。

这算是上课笔记吧,咋和一起啊,萌新不会啊

Hmily 发表于 2022-3-4 17:22

Simp1e 发表于 2022-3-4 17:18
这算是上课笔记吧,咋和一起啊,萌新不会啊

编辑帖子,笔记里还是发编程求助区的讨论分类吧

dyb1220 发表于 2022-8-5 11:01

光跟着老师后面学肯定是不够的,需要课下多多自学

sknbs 发表于 2022-8-5 23:39

感觉需要加点实际的例子
页: [1]
查看完整版本: 继承