1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Java学习分享—【面向对象基础】 封装 权限修饰符等...

Java学习分享—【面向对象基础】 封装 权限修饰符等...

时间:2019-08-12 06:10:46

相关推荐

Java学习分享—【面向对象基础】 封装 权限修饰符等...

封装

1.相关概念

java有三大特性:封装、继承、多态

封装是面向对象的思想的特性

对属性、方法、类、项目 进行封装

内部类也是封装的体现

封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互.

在程序设计的过程中要追求“高内聚,低耦合”。

高内聚:就是类的内部数据操作细节自己来完成,不允许外部干涉,

低耦合:就是, 仅暴露少量的方法给外部使用

通常,应禁止直接访问一个对象中数据的实际表示,而是应该通过操作接口来访问,这叫信息隐藏

2.对属性进行封装

对成员变量加修饰符 private JavaBean规范

实体类中写set和get方法 【快捷键】

代码示例:

//class Pandas{private String name;private int age;private double weight;private double height;//快捷键 source -- Generate public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public double getWeight() {return weight;}public void setWeight(double weight) {this.weight = weight;}public double getHeight() {return height;}public void setHeight(double height) {this.height = height;}}public class Test_01 {public static void main(String[] args) {Pandas pandas = new Pandas();pandas.setName("圆圆");pandas.setAge(6);pandas.setWeight(160.2);pandas.setHeight(173.3);System.out.println(pandas.getName()+pandas.getAge()+pandas.getWeight()+pandas.getHeight());}}

权限修饰符

public 公开的

private 私有的

protected 受保护的

default 默认的(不写就是默认的)

权限修饰符去修饰 类,成员变量,成员方法 等。赋予他们不同的权限

权限修饰符

1. private ( 当前类访问权限 )

使用 private 修饰的 成员 只能在 当前类的内部 被访问。常用于修饰 成员变量 ( 封装 )。

2. default ( 包访问权限 )

默认权限修饰符。使用 default 修饰的 成员或外部类 可以被 相同包下的其他类 访问。

3. protect ( 子类访问权限 )

使用 protect 修饰的 成员 既可以被 同一个包中的其他类 访问,也可以被 不同包中的子类 访问。常用于修饰 希望被子类重写的方法 ( override )。

4. public ( 公共访问权限 )

使用 public 修饰的 成员或者外部类 可以被 所有类 访问。

this关键字

1.放在类中,用来表示当前对象

可以用this调用属性和方法

this关键字只能用在方法(成员\构造)中

2.this 很少用于调用当前的构造方法

3.this()只能在构造方法的第一行

代码示例:

class Rabbit {String name;int age;public Rabbit(String name, int age) {//this();//在调用无参构造this.name = name;this.age = age;}public Rabbit() {//在Rabbit的无参构造方法中调用了有参的构造方法this("狗狗", 12);//这个this 就是rabbit1System.out.println(this);//代表的当前的对象 打印的是一个内存地址}//写一个方法//在main主函数中调用eat//对象.eat(); 哪个对象调用 的eat方法 this就是那个对象public void eat() {//可以使用this调用属性this.name = "狗蛋";System.out.println(this.name);//可以使用this调用方法this.test();}public void test () {System.out.println("这个是测试方法");}}public class Demo6 {public static void main(String[] args) {Rabbit rabbit1 = new Rabbit();System.out.println(rabbit1);//rabbit1.eat();System.out.println(rabbit1.name);System.out.println(rabbit1.age);/*** com.qfedu.b_fengzhuang.Rabbit@15db9742 thiscom.qfedu.b_fengzhuang.Rabbit@15db9742 rabbit1*/Rabbit rabbit2 = new Rabbit();System.out.println(rabbit2);/*** com.qfedu.b_fengzhuang.Rabbit@6d06d69c thiscom.qfedu.b_fengzhuang.Rabbit@6d06d69c rabbit2 */}}

多类合作

一个类对象可以当成另外一个类的成员变量

代码示例:

需求:两个宠物一个狗一个猫宠物饿了,需要主人给宠物喂食1.不同的宠物吃的不同 //如果是同一个投喂方法 需要传参 这个参数是 猫或狗类 对象 但是这是两个不同类型的 对象 所以要建两种方法? 或者一种方法 传不同的参数进去2.不同的宠物吃完食体力值增加3.主人和狗玩游戏 接飞盘的游戏。狗体力值减去10,但是会和主人的亲密度提升54.主人和猫玩游戏 滚毛球。猫体力值减去12 ,但是会和主人的亲密度提升7人类猫类狗类*///人类class Person{private String name;private Cat cat;private Dog dog;public Person() {super();// TODO Auto-generated constructor stub}//public Person(String name, Cat cat, Dog dog) {//super();//this.name = name;//this.cat = cat;//this.dog = dog;//}public Person(String name) {super();this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Cat getCat() {return cat;}public void setCat(Cat cat) {this.cat = cat;}public Dog getDog() {return dog;}public void setDog(Dog dog) {this.dog = dog;}//人类喂猫方法public void feed(Cat cat) {cat.eat();}//人类喂狗方法public void feed(Dog dog) {dog.eat();}//和猫玩public void play(Cat cat) {cat.fluffBall();}//和狗玩public void play(Dog dog) {dog.catchFrisbee();}}//猫类class Cat{private String name;private int strength;//体力值private int intimacy;//亲密度public Cat() {super();// TODO Auto-generated constructor stub}public String getName() {return name;}public void setName(String name) {this.name = name;}//public Cat(String name, int strength, int intimacy) {//super();//this.name = name;//this.strength = strength;//this.intimacy = intimacy;//}//public Cat(int strength, int intimacy) {//super();//this.strength = strength;//this.intimacy = intimacy;//}public int getStrength() {return strength;}//设置猫的体力public void setStrength(int strength) {if (strength<0 ||strength >100) {System.out.println("猫猫的体力值不能小于0且不能大于100");throw new IllegalArgumentException("invalid strength value");//体力值无效}else {this.strength = strength;}}public int getIntimacy() {return intimacy;}public void setIntimacy(int intimacy) {this.intimacy = intimacy;}//猫eat方法public void eat() {//每吃一次加10点体力if (strength>=100) {System.out.println(name+"吃不动了");this.strength = 100;}else {System.out.println(name+"正在吃,体力值加7");this.strength = strength+10;}//判断体力方法适合哪种状态//this.sleep();}//滚毛球public void fluffBall() {if (strength<=30) {System.out.println(name +"玩不动了,要吃饭");}else {System.out.println(name+"正在滚毛球,体力值减12,亲密度加7");this.strength = strength - 12;//玩一次消耗12点体力值this.intimacy = intimacy + 7; //增加7点亲密度if (intimacy>=100) {System.out.println("达成成就:【重度猫瘾患者】,亲密度已达上限");this.intimacy = 100;}}}//睡觉public void sleep() {if (strength<=30) {System.out.println(name + "要吃饭");}else if (strength>30 && strength<=40) {System.out.println(name +"困了");}else if (strength>40 && strength<=70) {System.out.println(name +"正无所事事");}else {System.out.println(name +"想让你起来嗨");}}//查询猫猫当前状态方法public void state(Person person,Cat cat) {//其实传一个参也行 传两个是为了方便修改里面单个数据System.out.println(person.getName()+" 的小猫 "+person.getCat().getName()+" 当前的状态是---> "+" 体力值:"+person.getCat().getStrength()+" 亲密度:"+person.getCat().getIntimacy());}}//狗类class Dog{private String name;private int strength;//体力值private int intimacy;//亲密度public Dog() {super();// TODO Auto-generated constructor stub}public String getName() {return name;}public void setName(String name) {this.name = name;}//public Dog(String name, int strength, int intimacy) {//super();//this.name = name;//this.strength = strength;//this.intimacy = intimacy;//}//public Dog(int strength, int intimacy) {//super();//this.strength = strength;//this.intimacy = intimacy;//}public int getStrength() {return strength;}//设置狗体力方法public void setStrength(int strength) {if (strength<0||strength >100) {System.out.println("修狗的体力值不能小于0且不能大于100");throw new IllegalArgumentException("invalid strength value");//体力值无效}else {this.strength = strength;}}public int getIntimacy() {return intimacy;}public void setIntimacy(int intimacy) {this.intimacy = intimacy;}//狗eat方法public void eat() {//每吃一次加7点体力if (strength>=100) {System.out.println(name+"吃不动了,体力值已满赶紧玩");this.strength = 100;}else {System.out.println(name+"正在吃,体力值加7");this.strength = strength+7;}//判断体力方法适合哪种状态//this.sleep(); //还是单独调用吧}//接飞盘public void catchFrisbee() {if (strength<=30) {System.out.println(name +"玩不动了,要吃饭");}else {System.out.println(name+"正在接飞盘,体力值减10,亲密度加5");this.strength = strength - 10;//玩一次消耗10点体力值//体力值小于30玩游戏不会增加亲密度this.intimacy = intimacy + 5; //增加5点愉悦度if (intimacy>=100) {System.out.println("达成成就:【狗的好兄弟】,亲密度已达上限");this.intimacy = 100;}}}//睡觉public void sleep() {if (strength<=30) {System.out.println(name + "要吃饭");}else if (strength>30 && strength<=40) {System.out.println(name +"困了");}else if (strength>40 && strength<=70) {System.out.println(name +"正无所事事");}else {System.out.println(name +"想让你起来嗨");}}public void state(Person person,Dog dog) {System.out.println(person.getName()+" 的小狗 "+person.getDog().getName()+" 当前的状态是---> "+" 体力值:"+person.getDog().getStrength()+" 亲密度:"+person.getDog().getIntimacy());}}public class Test04 {public static void main(String[] args) {//实例化人类对象Person person = new Person("唐三少");//实例化猫猫对象Cat cat = new Cat();cat.setName("悠米");cat.setStrength(50);cat.setIntimacy(20);//人设置猫?person.setCat(cat);//查看猫猫状态//cat.state(person, cat);//实例化狗狗对象Dog dog = new Dog();dog.setName("旺财");dog.setStrength(60);dog.setIntimacy(40);//人设置狗?person.setDog(dog);//查看狗狗状态//dog.state(person, dog);//开始执行对狗的方法person.feed(dog);person.feed(dog);person.feed(dog);person.feed(dog);person.feed(dog);person.feed(dog);person.feed(dog);person.feed(dog);person.feed(dog);person.feed(dog);person.play(dog);person.play(dog);person.play(dog);person.play(dog);person.play(dog);person.play(dog);person.play(dog);person.feed(dog);person.feed(dog);person.feed(dog);person.feed(dog);person.feed(dog);person.feed(dog);person.play(dog);person.play(dog);person.play(dog);person.play(dog);person.play(dog);person.play(dog);person.play(dog);person.feed(dog);person.feed(dog);person.feed(dog);person.feed(dog);person.feed(dog);person.feed(dog);dog.state(person, dog);dog.sleep();System.out.println("-----------------------------------------------------");//开始执行对猫的方法person.feed(cat);person.play(cat);person.feed(cat);person.feed(cat);person.feed(cat);person.feed(cat);person.feed(cat);person.feed(cat);person.feed(cat);person.feed(cat);person.feed(cat);person.play(cat);person.play(cat);person.play(cat);person.play(cat);person.play(cat);person.play(cat);person.play(cat);person.feed(cat);person.feed(cat);person.feed(cat);person.feed(cat);person.feed(cat);person.feed(cat);person.feed(cat);person.feed(cat);person.feed(cat);person.play(cat);person.play(cat);person.play(cat);person.play(cat);person.play(cat);person.play(cat);person.play(cat);cat.state(person, cat);cat.sleep();}}//输出结果旺财正在吃,体力值加7旺财正在吃,体力值加7旺财正在吃,体力值加7旺财正在吃,体力值加7旺财正在吃,体力值加7旺财正在吃,体力值加7旺财吃不动了,体力值已满赶紧玩旺财吃不动了,体力值已满赶紧玩旺财吃不动了,体力值已满赶紧玩旺财吃不动了,体力值已满赶紧玩旺财正在接飞盘,体力值减10,亲密度加5旺财正在接飞盘,体力值减10,亲密度加5旺财正在接飞盘,体力值减10,亲密度加5旺财正在接飞盘,体力值减10,亲密度加5旺财正在接飞盘,体力值减10,亲密度加5旺财正在接飞盘,体力值减10,亲密度加5旺财正在接飞盘,体力值减10,亲密度加5旺财正在吃,体力值加7旺财正在吃,体力值加7旺财正在吃,体力值加7旺财正在吃,体力值加7旺财正在吃,体力值加7旺财正在吃,体力值加7旺财正在接飞盘,体力值减10,亲密度加5旺财正在接飞盘,体力值减10,亲密度加5旺财正在接飞盘,体力值减10,亲密度加5旺财正在接飞盘,体力值减10,亲密度加5旺财正在接飞盘,体力值减10,亲密度加5达成成就:【狗的好兄弟】,亲密度已达上限旺财玩不动了,要吃饭旺财玩不动了,要吃饭旺财正在吃,体力值加7旺财正在吃,体力值加7旺财正在吃,体力值加7旺财正在吃,体力值加7旺财正在吃,体力值加7旺财正在吃,体力值加7唐三少 的小狗 旺财 当前的状态是---> 体力值:64 亲密度:100旺财正无所事事-----------------------------------------------------悠米正在吃,体力值加7悠米正在滚毛球,体力值减12,亲密度加7悠米正在吃,体力值加7悠米正在吃,体力值加7悠米正在吃,体力值加7悠米正在吃,体力值加7悠米正在吃,体力值加7悠米正在吃,体力值加7悠米吃不动了悠米吃不动了悠米吃不动了悠米正在滚毛球,体力值减12,亲密度加7悠米正在滚毛球,体力值减12,亲密度加7悠米正在滚毛球,体力值减12,亲密度加7悠米正在滚毛球,体力值减12,亲密度加7悠米正在滚毛球,体力值减12,亲密度加7悠米正在滚毛球,体力值减12,亲密度加7悠米玩不动了,要吃饭悠米正在吃,体力值加7悠米正在吃,体力值加7悠米正在吃,体力值加7悠米正在吃,体力值加7悠米正在吃,体力值加7悠米正在吃,体力值加7悠米正在吃,体力值加7悠米正在吃,体力值加7悠米吃不动了悠米正在滚毛球,体力值减12,亲密度加7悠米正在滚毛球,体力值减12,亲密度加7悠米正在滚毛球,体力值减12,亲密度加7悠米正在滚毛球,体力值减12,亲密度加7悠米正在滚毛球,体力值减12,亲密度加7达成成就:【重度猫瘾患者】,亲密度已达上限悠米正在滚毛球,体力值减12,亲密度加7达成成就:【重度猫瘾患者】,亲密度已达上限悠米玩不动了,要吃饭唐三少 的小猫 悠米 当前的状态是---> 体力值:28 亲密度:100悠米要吃饭

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