程序员:死磕Java之5个what揭开向对象核心
一、What ls an Object?(什么是对象?)
别人问你什么是对象,你怎么回答?对象就是我的男/女朋友啊
哈哈哈,这样的回答肯定你不是程序员了。
如果你站在大街上,会看到:男人和女人,而且头发各异、各种体型、各种头发颜色不同的人。
当然了,这些都可以统称为现实世界中的对象,而且都有共同的两个特征:它/她/他们具有的状态和行为。
例如:宠物狗的状态(名字、颜色、品种、饥饿程度)和行为(叫、走、摇尾巴、吃等);
如果你能很快的识别现实世界对象的状态和行为,那么面向对象的程序设计思想是很方便理解的。
二、What ls a Class?(什么是类?)
在现实世界中,有很多共同点的个体,例如:富贵论坛各种品牌的自行车,人(男人和女人,不同国家的人)等。
拿人来说,人分为男性和女性,如果你非要说还有第三种性别的人的话,我也不跟你犟嘴了。
人都有头发、嘴、鼻子、手、胳膊;
人都会吃喝拉撒睡、玩、学习、走路、等等。
那就可以把有什么抽象出来为状态;
把会什么抽象出来为动作;
可以编写为一下代码:
public class Person {
private String name;//姓名
private double height;//身高
private double weight;//体重
private String sex;//性别
private int age;//年龄
private String school;//学校
public String getName() {
return name;
}
public void setName(String name) {
this.name=name;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height=height;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight=weight;
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school=school;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex=sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age=age;
}
//获取个人资料
public void getPersonInfomation(){
System.out.println("【"+getName()+"】是【"+getSex()+"】生,今年【"+getAge()+"】岁了,体重【"+getWeight()+"】,身高【"+getHeight()+"】,在【"+getSchool()+"】上学");
}
}
含有main方法的测试类:
public class PersonTest {
public static void main(String[] args) {
Person xiaoming=new Person();
xiaoming.setName("小明");
xiaoming.setAge(22);
xiaoming.setSex("男");
xiaoming.setHeight(175);
xiaoming.setWeight(113);
xiaoming.setSchool("山东建筑大学");
Person xiaohong=new Person();
xiaohong.setName("小红");
xiaohong.setAge(21);
xiaohong.setSex("女");
xiaohong.setHeight(169);
xiaohong.setWeight(95);
xiaohong.setSchool("山东建筑大学");
xiaoming.getPersonInfomation();
xiaohong.getPersonInfomation();
}
}
运行结果:
【小明】是【男】生,今年【22】岁了,体重【113.0】,身高【175.0】,在【山东建筑大学】上学
【小红】是【女】生,今年【21】岁了,体重【95.0】,身高【169.0】,在【山东建筑大学】上学
三、What ls Inheritance?(什么是继承?)
不同的种类的对象通常之间有一定的共同点。
像人和动物,都有鼻子、嘴巴,只是个别的不同,动物有毛发,而人是头发。
那么就可以抽取共同点。
共同点:
//共同点
public class PersonAndDogCommon {
private String name;//姓名
private double height;//身高
private double weight;//体重
private String sex;//性别
private int age;//年龄
public String getName() {
return name;
}
public void setName(String name) {
this.name=name;
}
public double getHeight() {
return height;
}
public void setHeight(double height) {
this.height=height;
}
public double getWeight() {
return weight;
}
public void setWeight(double weight) {
this.weight=weight;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex=sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age=age;
}
}
人:
public class Person extends PersonAndDogCommon{
private String school;//学校
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school=school;
}
}
狗:
//狗
public class Dog extends PersonAndDogCommon{
private String dogHome;//宠物的家
public String getDogHome() {
return dogHome;
}
public void setDogHome(String dogHome) {
this.dogHome=dogHome;
}
}
四、What ls a Interface?(什么是接口)
接口是与外界交互的接口
例如:电脑的USB接口,手机的耳机孔,充电孔,手机与电脑关机与关机键这些都可以看做为接口。
下面以手机为例:手机的音量(加音量、减音量、开机、关机)
public interface PhoneI {
public int addTheVolume(int volume);//加音量
public int reduceTheVolume(int volume);//加音量
public boolean startPhone(boolean status);//开机关机
}
public class Phone implements PhoneI {
private int volume;//音量
private boolean status;//开关机状态
@Override
public int addTheVolume(int volume) {
return (this.volume + this.volume + volume);
}
@Override
public int reduceTheVolume(int volume) {
return (this.volume=this.volume - volume);
}
@Override
public boolean startPhone(boolean status) {
return (this.status=!status);
}
}
五、What ls a Package?(什么是包?)
一个包(package)可以定义为一组相互联系的类型(类、接口、枚举和注释),为这些类型提供访问保护和命名空间管理的功能。
以下是一些 Java 中的包:
java.lang-打包基础的类
java.io-包含输入输出功能的函数
开发者可以自己把一组类和接口等打包,并定义自己的包。而且在实际开发中这样做是值得提倡的,当你自己完成类的实现之后,将相关的类分组,可以让其他的编程者更容易地确定哪些类、接口、枚举和注释等是相关的。
由于包创建了新的命名空间(namespace),所以不会跟其他包中的任何名字产生命名冲突。使用包这种机制,更容易实现访问控制,并且让定位相关类更加简单。
例如:
版权声明:本文为CSDN博主「TrueDei」的原创文章
原文链接:
blog.csdn/qq_17623363/article/details/104878559
#Java##学习路径#