一、封装的实现步骤:
1.属性私有化
private int numOfLegs;//有几条腿
2.提供set,get方法 (可用快捷方式添加)
public int getNumOfLegs() {
return numOfLegs;
}
public void setNumOfLegs(int numOfLegs) {
this.numOfLegsth=numOfLegsth;
}
3.在set,get方法中加入对属性的限制
public int getNumOfLegs() {
return numOfLegs;
}
public void setNumOfLegs(int numOfLegs) {
if(numOfLegs!=4){//为属性添加限制
numOfLegs=4;
}else{
this.numOfLegs = numOfLegs;
}
}
二、方法的重载
同类同名不同参
public String sayHello(){
return("摇摇尾巴");
}
public String sayHello(int mood){
this.setMood(mood);
switch(this.mood){
case 1:
return("呜呜叫");
case 2:
return("汪汪汪叫");
default:
return("摇摇尾巴");
}
}
//在同一类中,名字同为sayHello,第一个无参数,第二个有参数
三、构造方法
1.java中每个类都有构造方法,用来初始化该类的一个对象
//为Dog添加无参构造方法和有参构造方法
public Dog() {//无参构造
this.numOfLegs =4;2.构造方法和类名相同,没有返回类型,不能写void
3.可以重载
4.构造方法只能由new关键字和this()调用
Dog dog1=new Dog();
dog1.sayHello(2);
四、继承
避免代码冗余,提高代码的可重用性和可维护性,父类的属性和方法可用于子类,让程序设计变得更加简单
1>父类
public class Animal {//proteced关键字
protected boolean mammal;//是否是哺乳动物
protected boolean carnivorous;//是否食肉
protected int mood;//情绪
}
//构造方法,初始化属性
public Animal() {
System.out.println("这是动物类的无参的构造方法!");
}
public Animal(boolean mammal, boolean carnivorous, int mood) {
System.out.println("这是动物类的有参的构造方法!");
this.mammal = mammal;
this.carnivorous = carnivorous;
this.mood = mood;
}
public class Dog extends Animal {//extends继承父类
public Dog() {
this.carnivorous=true;
this.mammal=true;
this.mood = mood;
}
public Dog(boolean mammal, boolean carnivorous, int mood) {
super(mammal,carnivorous,mood);//调用父类的构造方法
}
五、方法重写
1.放生在子类和父类之间
2.方法名相同,参数列表相同,返回类型相同
1>父类
public String sayHello(){
return "hello!";
}
public String sayHello(int mood){
switch(mood){
case 1:
return("不高兴的叫");//情绪烦躁
case 2:
return("高兴的叫");//情绪好
default:
return("hello");
}
}
2>子类
@Override
public String sayHello() {
return "汪汪叫";
}
@Override
public String sayHello(int mood) {
switch(mood){
case 1:
return("蹭蹭你的腿");//情绪烦躁
case 2:
return("咬你一口");//情绪好
default:
return("汪汪叫");
}
}