该露的露,该藏的藏
我们程序设计要求“高内聚 低耦合”。高内聚就是类的内部数据 *** 作细节自己完成,不允许外部干涉;低耦合:暴露少量的方法给外部使用。
封装(数据的隐藏)
通常,应禁用直接访问一个对象中数据实际表示,而通过 *** 作接口来访问,这称为信息隐藏 代码
package com.qiu.bigthree; public class Packaging { private String name; private char sex; private int age; //get是获取方法,set是设置数据 public void setName(String name){ if(name.length()>=7){//判断名字长度是否输入超过7个 System.out.println("非人类名字"); }else{ this.name=name; } } public String getName(){ return this.name; } public void setSex(char sex){ this.sex=sex; } public char getSex(){ return this.sex; } public void setAge(int age){ if (age>100||age<=0){ System.out.println("错误"); }else{ this.age=age; } } public int getAge(){ return this.age; } }继承
extends的意思是”扩展“子类是父类的扩展。java中只有单继承没有多继承(看继承关系IDEA快捷键Ctrl+H)子类继承父类就相当于有了父类的所有东西,不包括私有属性,私有属性不能被继承 代码
//父类代码 package com.qiu.bigthree; public class InheritPerson1 { private int money1=1_0000_0000; public int moneystudent=1000_0000; public void shou(){ System.out.println("InheritPerson1被继承了"); } } //子类代码 package com.qiu.bigthree; public class InheritStudent2 extends InheritPerson1{ }this和super 代码
//父类代码 package com.qiu.bigthree; public class Inheritsuper1 { public String name="我是的inheritsuper1父类"; public void print(){ System.out.println("是父类的print方法"); } public Inheritsuper1() { System.out.println("我是Inheritsuper1构造方法"); } } //子类代码 package com.qiu.bigthree; public class Inheritsuper2 extends Inheritsuper1{ public String name="我是inheritsuper1子类"; public void demo(String name){ System.out.println(name); System.out.println(this.name);//this是值当前类的属性 System.out.println(super.name);//super是指父类的属性 } public void print(){ System.out.println("我是子类print方法"); } public void demo1(){ print();//当前类的方法 遵循就近原则,找最近的一个方法 this.print();//this是调用当前类的方法 super.print();//super是调用父类方法 } public Inheritsuper2() { //默认会有super调用父类的构造器 super()必须要在第一行,不能于this()一起 super();//调用父类的构造器 System.out.println("我是Inheritsuper2构造方法"); } }重写
重写:需要有继承关系,子类重写父类的方法
方法名必须相同,参数列表必须相同修饰符:范围可以扩大但不能缩小public—>protected—>defalut—>private抛出的异常:范围只能缩小不能扩大
为什么要重写
父类的功能子类不需要,或者不满足 代码
//父类代码 package com.qiu.bigthree; public class Overlap1 { public void test(){ System.out.println("我是父类----->test()"); } } //子类代码 package com.qiu.bigthree; public class Overlap2 extends Overlap1{ @Override 有功能的注释 public void test() { System.out.println("我是子类----->test()"); } }多态
一个对象的实际类型是确定的,但可以指向对象的引用类型有很多多态的条件
有继承关系父类引用指向子类对象 代码
//父类代码 package com.qiu.polymorphism; public class Person { public String name="我是父类father"; public void test(){ System.out.println("父类father"); } } //子类代码 package com.qiu.polymorphism; public class Students extends Person{ public String name="我是子类son"; @Override public void test() { System.out.println("子类son"); } public void eat(){ System.out.println("我要吃饭"); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)