• 2020年8月12日 继承 继承(2)


    package com.atguigu.test02;
    
    /*
     * 继承:
     * (1)延续    
     * (2)扩展
     * 
     * 1、为什么要有继承?
     * (1)当某个类,需要派生出很多子类别
     * Person:
     *       需要派生出Teacher,Student等等子类别
     *      那么此时Person中的共有的部分,就不需要在子类别中再次去声明
     * (2)当多个类,出现了共同的特征时,可以把共同的部分抽取到父类中
     * 
     * 目的:
     *     代码的复用和扩展
     * 
     * 2、如何实现继承?
     * 【修饰符】 class 子类   extends 父类{
     * }
     * 
     * 子类:subclass,也称为派生类
     * 父类:superclass,也称为超类,基类
     * 
     * 3、继承的特点:
     * (1)子类继承了父类,
     * 从事物的特征来说,子类会继承父类所有的特征(属性和方法)。
     * 但是从代码操作角度来说,父类中私有的属性、方法在子类中是不能直接使用的
     * (2)子类继承父类时,构造器是不能被继承的
     * (3)子类继承父类时,在子类的构造器中一定要去调用父类的构造器
     * 默认情况下,调用的是父类的无参构造;
     * 如果父类没有无参构造,那么在子类的构造器的首行,必须手动调用父类的有参构造;
     * 
     * 未完待续。。。
     */
    public class TestInherited {
        public static void main(String[] args) {
            Teacher t = new Teacher();
            t.setName("柴老师");
            t.setAge(18);
            
            System.out.println("姓名:" + t.getName());
            System.out.println("年龄:" + t.getAge());
            
    //        Teacher t2 = new Teacher("宋老师",28);
        }
    }
    class Person{
        private String name;
        private int age;
        //构造器
        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
        //get/set
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        
    }
    class Teacher extends Person{
        private double salary;
        
        public Teacher() {
            super(null, 0);
        }
    
        public Teacher(String name, int age, double salary) {
            super(name, age);//调用父类的有参构造,必须在子类构造器的首行
            this.salary = salary;
        }
    
        public void test(){
            //System.out.println("name = " + name);//父类私有的属性在子类中不能直接使用
        }
    }
    class Student extends Person{
        private int score;
    
        public Student(String name, int age, int score) {
            super(name, age);//调用父类的有参构造,必须在子类构造器的首行
            this.score = score;
        }
        
    }
    package com.atguigu.test02;
    
    /*
     * 3、继承的特点:
     * (1)子类继承了父类,
     * 从事物的特征来说,子类会继承父类所有的特征(属性和方法)。
     * 但是从代码操作角度来说,父类中私有的属性、方法在子类中是不能直接使用的
     * (2)子类继承父类时,构造器是不能被继承的
     * (3)子类继承父类时,在子类的构造器中一定要去调用父类的构造器
     * 默认情况下,调用的是父类的无参构造;
     * 如果父类没有无参构造,那么在子类的构造器的首行,必须手动调用父类的有参构造;
     * (4)Java只支持单继承,即一个Java类只能有一个直接父类
     *         只能有一个亲生父亲
     * (5)Java支持多层继承,即父类还可以有父类
     *         代代相传
     * (6)一个Java类可以同时有很多个子类,而且子类还可以有子类
     *         一个父亲可以有多个孩子,子孙满堂
     * (7)子类可以扩展父类没有的属性、方法
     */
    public class TestInherited2 {
    
    }
    class Things{
        
    }
    class Graphic extends Things{
        
    }
    
    class Circle extends Graphic{
        
    }
    class Rectangle extends Graphic{
        
    }
  • 相关阅读:
    注解的作用
    962. Maximum Width Ramp
    594. Longest Harmonious Subsequence
    1042. Flower Planting With No Adjacent
    419. Battleships in a Board
    1041. Robot Bounded In Circle
    leetcode 395. Longest Substring with At Least K Repeating Characters(高质量题)
    leetcode 44. Wildcard Matching(模糊匹配)
    HEU预热赛
    780. Reaching Points
  • 原文地址:https://www.cnblogs.com/douyunpeng/p/13489785.html
Copyright © 2020-2023  润新知