• 面向对象三大特征之继承


    一、继承

    使用要点:

    1.父类也称作超类、基类、派生类等。

    2.Java中只有单继承,没有像C++那样的多继承。多继承会引起混乱,使得继承链过于复杂,系统难于维护。(类只有单继承,接口有多继承)

    3.Java中类没有多继承,接口有多继承。

    4.子类继承父类,可以得到父类的全部属性和方法(除了父类的构造方法),但不见得可以直接访问(比如,父类私有的属性和方法)。

    5.如果定义一个类时,没有调用extends,则它的父类是:java.lang.Object。

    package cn.s;
    
    public class TestExtends {
        public static void main(String[]args) {
            Student stu=new Student();
            stu.name="sun";
            stu.old=18;
            stu.rest();
            Student stu2=new Student("@sun",18,"play");
            System.out.println("我的名字是:"+stu2.name);
            System.out.println(stu2 instanceof Student);   //用于判断该对象是否属于该类。
            System.out.println(stu2 instanceof Person);
            System.out.println(stu2 instanceof Object);
        }
    
    }
    class Person
    {
        String name;
        int old;
        public void rest() {
            System.out.println("休息一会!");
        }
    }
    class Student extends Person{
        String major;
        
        public void study() {
            System.out.println("学习两小时");
        }
        public Student(String name,int old,String major) {//构造方法
            this.name=name;
            this.old=old;
            this.major=major;
        }
        public Student() {
            
        }
        
    }

    方法的重写  override

    方法的重写需要符合下面的三个要点:

    1.“==” :方法名、形参列表相同。

    2.“<=” :返回值类型和声明异常类型,子类小于等于父类。

    3.“>=” :访问权限,子类大于等于父类。

    package cn.s;
    
    public class TestOverride {
        public static void main(String[]args) {
            Horse h= new Horse();
            h.run();
        }
    
    }
    
    class Vehicle{
        public void run() {
            System.out.println("快点跑");
        }
        public void stop() {
            System.out.println("停下来");
        }
        public Person  who() {
            return new Person();                    //Person 类
            
        }
    }
        
    
    
    class Horse extends Vehicle{                    //继承父类
        public void run() {                            //对父类方法的重写;
            System.out.println("已经够快了");
        }
        public Student who() {                        //student类
            return new Student();                   //返回值类型子类小于等于父类
        }
    }

    Object 类是所有java 类的根基类,也就意味着所有的java 对象都拥有Object类的属性和方法。

    package cn.s;
    
    public class TestObject {
        public static void main(String args[]) {
            TestObject to =new TestObject();
            System.out.println(to.toString());
            
            ACP p=new ACP("sun",18);                    //对象
            System.out.println(p.toString());
    
        }
        
        public String toString() {
            return "测试object";
        }
    }
    class ACP{
        String name;
        int age;
        public String toString() {                        //在ACP中重写toString方法
            return "姓名:"+name+",年龄:"+age;
        }
        
        public ACP(String name,int age) {
            this.name=name;
            this.age=age;
        }
        
    }

     super父类对象引用——继承树追溯问题

  • 相关阅读:
    DS博客作业02--栈和队列
    DS博客作业03--树
    C博客作业05--指针
    C语言博客作业04--数组
    C博客作业03--函数
    C博客作业02--循环结构
    C博客作业01--分支、顺序结构
    我的第一篇博客作业
    java购物车案例
    第三周-自主学习任务-面向对象基础与类的识别
  • 原文地址:https://www.cnblogs.com/ssxblog/p/11181753.html
Copyright © 2020-2023  润新知