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