首页 > 其他分享 >override

override

时间:2022-11-24 15:26:03浏览次数:32  
标签:name 子类 age override 父类 public Users



package com.Lucky.oop; /* 构造器: 【和类名称相同,没有返回值,初始化对象值】 1.创建完成一个类之后,会自动再创建一个无参构造器【不显示】 2.一旦创建有参构造器,就无法使用new实例化一个无参数对象 3.alt+insert :快捷键 4.一旦存在有参构造器,就必须显示无参构造器 */ public class testCS { String name; int age; public testCS() { System.out.println("父类的无参构造器被调用了"); } //一旦存在有参构造器,就必须显示无参构造器 public testCS(String name, Integer age) { this.name = name; this.age = age; } /////继承方面:带有private关键字无法继承且调用 private void CS(String name) { this.name = name; } //带有public键字可以继承且调用 public void say() { System.out.println("父类中的say方法被调用了"); } public String Hello(){ System.out.println("我是没有重写之前的Hello"); return "Hello可以重写"; } //fu类特有的方法 public void Father(){ System.out.println("我是父类特有的方法"); } }

  

package com.Lucky.oop.constructorClass;

import com.Lucky.oop.testCS;

import java.lang.ref.SoftReference;
import java.math.BigDecimal;

//测试类:用于作为java特性:封装,继承,多态 讲解
         /*
         封装作用:提高程序的安全性
                  隐藏代码细节
                  统一接口
                  系统可维护
          */
/*
         继承【extends】作用:  1子类拥有父类的所有公有的属性以及方法
                             2如果父类中存在private[私有的]属性以及方法则无法继承
                             3:ctrl+H :打开关系树
                             4.所有的类都间接或直接继承Object
                             5.只能单继承
                             6.想调用父类的属性以及方法采用super


         super注意点:
            1.调用父类的构造器方法,super必须放到第一位
            2.只能出现在子类的方法或构造器方法中
            3.super和this不能同时调用构造器方法


         super与this
                 this:代表调用者本身【没有继承也可以使用】
                 super:代表父类对象【只有在继承条件下才能使用】
          */

//private  是私有的
//protected 受保护的
//public  公有的
//default  默认的
public class Users extends testCS {
    private String name;
    private int age;
    private String address;
    private BigDecimal money;

    public Users() {
        // super();这个是隐藏代码
        System.out.println("子类的无参构造器被调用了");

    }

    public Users(String name, int age, String address, BigDecimal money) {
        this.name = name;
        this.age = age;
        this.address = address;
        this.money = money;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    //封装例子:年龄大于150或小于0 都是不合法 加上条件
    public void setAge(int age) {
        if(age>150 || age<0){
            this.age=3;
        }
        this.age = age;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public BigDecimal getMoney() {
        return money;
    }

    public void setMoney(BigDecimal money) {
        this.money = money;
    }

    @Override
    public String toString() {
        return "Users{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", address='" + address + '\'' +
                ", money=" + money +
                '}';
    }






    //继承:
    public void say() {
        System.out.println("子类中的say方法被调用了");
        super.say();  //调用父类的方法say
    }

    //重写
    @Override
    public String Hello() {
        System.out.println("我是重写的Hello");
        return "我是重写的Hello";
    }

    //子类特有的方法
    public void NB(){
        System.out.println("我是子类特有的方法");
    }
}

  

Override效果展示:

 1 package com.Lucky.oop;
 2 
 3 import com.Lucky.oop.constructorClass.Users;
 4 
 5 /*
 6     重写:需要有继承的关系
 7          1.什么都要相同,除了【修饰符】修饰符可以变大,但是不能变小
 8          public>protected>default>private
 9          2.方法体可以不同【这就是重写的意义】
10          3.拓展:异常的范围是可以变小,但是不能变大
11 
12          注意点:为什么要重写????
13                  1。父类的功能在子类中不一定用的上或者不一定可以满足
14                  2. 优化代码
15                  3.static方法属于类,不能重写【不属于实例】
16                    final方法,不能重写
17                    private方法,不能重写
18 
19 
20  */
21 
22 public class OverrideClas {
23     public static void main(String[] args) {
24         //调用重写的方法
25          /*
26         能调用自身特有的方法以及继承父类中public的方法
27          */
28         Users users=new Users();
29         users.Hello();
30 
31         //继承的原因:父类testCS指向子类Users
32         /*
33         不能调用子类特有的方法
34          */
35         testCS cs=new Users();
36         cs.Hello();    //因为子类父类都存在该方法,所以指向的是子类的Hello方法
37       //   cs.NB();   NB是子类特有的方法
38         cs.Father();
39 
40 
41        /*
42        多态:
43             1.是方法的多态,属性没有多态
44             2.父类和子类的关系
45             3.存在条件:继承关系,方法需要重写,就父类指向子类的运用就是多态  testCS是父类  Users是子类
46               例如:testCS cs=new Users();
47 
48         */
49 
50 
51         /**
52          * instanceof  :判断是否
53          */
54         Object test=new Users();   //小知识:alt+enter:补充内容
55         System.out.println(test instanceof Users);  //true
56         System.out.println(test instanceof Object); //true
57         System.out.println(test instanceof testCS); //true
58 
59 
60 
61 
62     }
63 }

 

标签:name,子类,age,override,父类,public,Users
From: https://www.cnblogs.com/Lucky-only/p/16921941.html

相关文章