1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Java学习第十二天<封装详解><继承><super详解><方法重写><多态>

Java学习第十二天<封装详解><继承><super详解><方法重写><多态>

时间:2019-12-17 20:21:15

相关推荐

Java学习第十二天<封装详解><继承><super详解><方法重写><多态>

封装详解

//类public class Student {//名字 学号 性别 属性私有(new 以后不能赋值)private String name;private int id;private char sex;private int age;//学习() 睡觉() 提供一些可以操作这个属性的方法//提供一些public 的get、set方法​//get 获得这个数据public String getName(){return this.name;}//set 给数据设置值public void setName(String name){this.name=name;}//快捷键 alt+insert​public int getId() {return id;}​public void setId(int id) {this.id = id;}​public char getSex() {return sex;}​public void setSex(char sex) {this.sex = sex;}​public int getAge() {return age;}​public void setAge(int age) {if(age>120||age<0){this.age = 3;}else{this.age=age;}​}}/*Application测试public static void main(String[] args) {com.oop.demo04.Student s1 = new com.oop.demo04.Student();​s1.setName("征途");System.out.println(s1.getName());s1.setAge(999);//不合法System.out.println(s1.getAge());​​}*//*分装的意义1.提高程序安全性,保护数据2.隐藏代码细节3.统一接口4.提高系统可维护性*/

继承

package com.oop.remo05;//java中所有类都默认继承object类public class Person {public void say(){System.out.println("说了一句话");}public int money6=100;private int money=10_0000_0000;​​public int getMoney() {return money;}​public void setMoney(int money) {this.money = money;}}/*public static void main(String[] args) {com.oop.remo05.Student student1 = new com.oop.remo05.Student();student1.say();System.out.println(student1.getMoney());System.out.println(student1.money6);​}*/

package com.oop.remo05;//学生 is 人 继承人的东西public class Student extends Person{// Person person;组合//子类继承父类,会拥有父类全部方法,private私有不能继承//public(继承一般用) protected default(默认,可不写) private//快捷键 ctrl+H 看继承关系}

package com.oop.remo05;​public class Teacher extends Person{}

super详解

package com.oop.demo05;//java中所有类都默认继承object类public class Person {public void say(){System.out.println("说了一句话");}public int money6=100;private int money=10_0000_0000;​​public int getMoney() {return money;}​public void setMoney(int money) {this.money = money;}​protected String name="zhengtu";public void print(){System.out.println("person");​}​public Person() {//无惨构造器,new后先执行,父类先执行System.out.println("Person无参执行了");}}/*public static void main(String[] args) {com.oop.remo05.Student student1 = new com.oop.remo05.Student();student1.say();System.out.println(student1.getMoney());System.out.println(student1.money6);​}*/​/* public static void main(String[] args) {Teacher teacher1 = new Teacher();teacher1.test("征途");teacher1.test1();}*/

package com.oop.demo05;​public class Teacher extends Person{private String name="weizhuang";public void print(){System.out.println("teacher");}public void test1(){print();//teacherthis.print();//teachersuper.print();//person​}​public void test(String name){System.out.println(name);//征途System.out.println(this.name);//当前类 weizhuangSystem.out.println(super.name);//父类 zhengtu​​}​public Teacher() {System.out.println("Teacher无参执行了");//隐藏代码:调用了父类无参构造 super();调用构造器(自己或父类)必须在子类构造器代码第一行​}}

super注意点:1.super调用父类构造方法,必须在构造方法的第一个2.super必须只能出现在子类的方法或者构造方法中3.super和this 不能同时调用构造方法​Vs this:代表的对象不同:this:本身调用的这个对象super:代表父类对象的引用前提:this:没有继承也可使用super:只能在继承条件下使用构造方法this();本类的构造super();父类的构造

方法重写

package com.oop.demo05;​public class A extends B{​@Override//alt+insert override重写public void test() {System.out.println("A=>test()");}}

package com.oop.demo05;//重写都是方法的重写,和属性无关public class B {​public void test(){System.out.println("B=>test()");}}/*//重写只能是public,静态和非静态的方法区别很大//静态方法的调用只和左边,定义的数据类型有关(A-A,B-B)//非静态方法 子类重写了父类的方法A a = new A();a.test();//A//父类的引用指向了子类B b = new A();b.test();//B*/

重写:需要有继承关系,子类重写父类的方法1.方法名必须相同2.参数列表必须相同3.修饰符:范围可以扩大,但不能缩小4.抛出的异常:范围可以缩小但不能扩大5.子类方法和父类必须一致,方法体不同​为什么需要重写:1.父类的功能,子类不一定需要或满足Alt+insert+override

多态

package com.oop.demo06;​public class Person {public void run(){System.out.println("run");}}

package com.oop.demo06;​public class Student extends Person{@Overridepublic void run() {System.out.println("son");}public void eat(){System.out.println("eat");}}/*多态注意事项:1.多态是方法的多态,属性没有多态2.父类和子类要有联系(类型匹配) ClassCastException!类型转换异常3.存在条件:继承条件,方法要重写,父类引用指向子类 Father f1=new Son();不能重写的方法:1.static 静态方法,属于类,不属于实例2.final 常量3.private 方法*/​/*//一个对象的实际类型是确定的(Student),可指向的引用类型不确定//对象能执行哪些方法,主要看对象左边的类型,和右边关系不大 如 s3.eat();调用不来,是因为 s3 的 Person 类型没有 eat//Student 子类能调用自己和父类方法 Person能指向子类,但不能调用子类独有方法com.oop.demo06.Student s2 = new com.oop.demo06.Student();com.oop.demo06.Person s3 = new com.oop.demo06.Student();//父类的引用指向子类的类型Object s4 = new com.oop.demo06.Student();​s3.run();//子类继承父类方法s2.run();//子类重写父类方法,执行子类方法s2.eat();((com.oop.demo06.Student) s3).eat();//高转低*/

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。