zoukankan      html  css  js  c++  java
  • 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{
        
    }
  • 相关阅读:
    oracle 下创建数据实例
    MyEclipse7.02注册码
    liferay 5.1学习遇到的错误
    详解struts2中struts.properties
    cas部署到linux登陆也出现异常
    java 字符串和输入流互转
    ASP 的Base64加密 与ASP MD5加密
    Struts2直接下载从数据中的blob类型字段( Struts2.0下载文件流)
    java 汉字转拼音
    java调shell,可以输入参数
  • 原文地址:https://www.cnblogs.com/douyunpeng/p/13489785.html
Copyright © 2011-2022 走看看