该露的露,该藏的藏
我们程序设计要求“高内聚 低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:暴露少量的方法给外部使用。
封装(数据的隐藏)
通常,应禁用直接访问一个对象中数据实际表示,而通过操作接口来访问,这称为信息隐藏 代码
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("我要吃饭");
}
}



