程序员:死磕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##学习路径#
全部评论
感谢楼主分享!
点赞 回复 分享
发布于 2022-01-12 19:38

相关推荐

野猪不是猪🐗:把你的学校加黑,加粗,斜体,下划线,描边,内阴影,内发光,投影,外发光,再上渐变色,居中,放大到最大字号,再把简历里其它内容删了,就行了
点赞 评论 收藏
分享
02-05 08:18
四川大学 Java
在思考的熊熊很讨厌吃香菜:不是,我门头沟学院呢?这都没排上?
点赞 评论 收藏
分享
02-15 22:29
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务