Java基础学习笔记-第3章-面向对象 (中)

一、面向对象 (OOP) 特征二:继承性

1. 继承性的理解

  • 继承性的好处
    • 减少了代码的冗余,提高了代码的复用
    • 便于功能的扩展
    • 为之后的多态性的使用提供了前提
  • Java基础学习笔记-第3章-面向对象 (中)_第1张图片
  • public class Person {
        int age;
        String name;
     
        public Person() {
            
        }
     
        public Person(int age, String name) {
            this.age = age;
            this.name = name;
        }
     
        public void eat() {
            System.out.println("吃饭");
        }
     
        public void sleep() {
            System.out.println("睡觉");
        }
    }
  • public class Student extends Person {
    //    int age;
    //    String name;
        String major;
     
        public Student() {
            
        }
     
        public Student(int age, String name, String major) {
            this.age = age;
            this.name = name;
            this.major = major;
        }
     
    //    public void eat() {
    //        System.out.println("吃饭");
    //    }
     
    //    public void sleep() {
    //        System.out.println("睡觉");
    //    }
    
        public void study() {
            System.out.println("学习");
        }
    }
  • public class PersonTest {
        public static void main(String[] args) {
            //创建Student类的对象
            Student student = new Student();
    
            student.eat(); //输出吃饭
            student.study(); //输出学习
    }

2. 继承性的使用

  • 继承性的格式:class A extends B { }
    • A类:子类、派生类、subclass
    • B类:父类、超类、基类、superclass
    • 体现:一旦子类A继承父类B以后,子类A中就获取了父类B中声明的所有的属性和方法
    • 特别地,父类中声明为private的属性或方法,子类继承父类以后,仍然认为获取了父类中私有的结构,只因为封装性的影响,使得子类不能直接调用父类的结构而已
    • 除此之外,子类继承父类以后,还可以声明自己特有的属性或方法,实现功能的扩展
    • 子类和父类的关系,不同于子集和集合的关系

3. 继承性的再说明

  • 一个类可以被多个子类继承
  • Java中类的单继承性:一个类只能有一个父类
  • 子父类是相对的概念,可以多层继承
  • 子类直接继承的父类称为直接父类,间接继承的父类称为间接父类
  • 子类继承父类以后,就获取了直接父类以及所有间接父类中声明的属性和方法

4. Object类的理解

  • 如果没有显式地声明一个类的父类的话在,则此类继承于java.lang.Object类
  • 所有的Java类 (除java.lang.Object类之外),都直接或间接地继承于java.lang.Object类
  • 这意味着所有的Java类都具有java.lang.Object类声明的功能

二、方法的重写 (override/overwrite)

1. 方法重写的理解

  • 定义:子类继承父类以后,可以对父类中同名同参的方法进行覆盖操作
  • 应用:重写以后,当创建子类对象以后,通过子类对象调用子父类中的同名同参的方法时,实际执行的时子类重写父类的方法
  • public class Person {
        int age;
        String name;
     
        public Person() {
            
        }
     
        public Person(int age, String name) {
            this.age = age;
            this.name = name;
        }
     
        public void eat() {
            System.out.println("吃饭");
        }
     
        public void sleep() {
            System.out.println("睡觉");
        }
    
        public void walk(int distance) {
            System.out.println("走路,走的距离是:" + distance + "公里");
        }
    }
  • public class Student extends Person {
        String major;
     
        public Student() {
            
        }
     
        public Student(String major) {
            this.major = major;
        }
    
        //对父类中的eat()方法进行重写
        public void eat() {
            System.out.println("学生多吃有营养的食物");
        }
    
        public void study() {
            System.out.println("学习");
        }
    }
  • public class PersonTest {
        public static void main(String[] args) {
            //创建Person类的对象
            Person person = new Person();
            
            person.eat(); //输出吃饭
            
            //创建Student类的对象
            Student student = new Student();
    
            student.eat(); //输出学生多吃有营养的食物
    }

2. 方法重写的细节

  • 规定
    • 方法的声明:权限修饰符 返回值类型 方法名(形参列表) throws 异常的类型 { }
    • 约定俗称:子类中的叫重写的方法,父类中的叫被重写的方法
    • 子类重写的方法的方法名形参列表与父类被重写的方法的方法名和形参列表相同
    • 子类重写的方法的权限修饰符不小于父类被重写的方法的权限修饰符
      • 子类不能重写父类中声明为private权限的方法

你可能感兴趣的:(Java,java,java-ee,intellij-idea)