第一章 Java中的面向对象规则
目录
前言
自我学习与记录。
现实世界由类组成:
相同性质的对象行程一类;
类按照不同的抽象程度也可以分成不同的层次;
类之间也有包含关系;
对象模型的特点:
抽象性:通过抽象获取一个概念的基本特征,可以让这个概念与其他概念区分出来,获取目标功能的共有的参数或者方法,不同于面向过程,把所有的东西写到一个方法当中,而是把整体的过承诺分解出来一个最大的参数值,这个具体的概念需要同学们自己发挥想象,考验自己的能力,将不同的功能设计成一个方法,然后在main函数中直接调用即可。
封装:理解为在现实世界里,我们对于自己的行动,只可以自己来支配,别人不可以调用我们自己去让我们行动,只能向另外的个体传送信息,让其自己调用,
同时,为了代码的安全,对象的方法应该对某些类不可见,进行适当的隐藏,推荐我们设立私有的变量,用共有的方法去调用,其他对象无法修改你的变量。这就是数据的封装。
1.将数据和方法捆绑到对象上,类体中只有成员变量和方法,形成独立的块体;
2.只有对象 自己引用自己的数据;
3.方法用{}封装起来,独立块;
4.一个方法可以让另一个对象调用自己;
5.数据隐藏,设计共有方法实现;
封装过程实现后就会达到1.数据被隐藏;2.模块化;3.代码更加健壮,利于编写和维护;
我们可以结合一个例子,比如说你购买了货到付款的一个商品,快递员应该是向你传递付款的信息,而不是直接从你那里拿钱,这个拿钱的过程是我们自己实现的;
继承
子类继承父类的非私有的变量和方法,在父类中出现的一些具有相同性质的属性,例如学生和大学生,大学生作为子类,可以继承学生的一些性质,例如姓名,学号等;
类及其成员
类实际上是一种对象的抽象模型,描述了一种统一的属性和行为。是创建对象的模版;
(1)类体内包括 数据和成员变量 ,还有功能方法(包括成员方法和构造方法),可以称之为类是储存方法的一个容器。
(2)Java是面相类的一个编程,类是抽象的而对象是具体的,有了类我们就可以动态的创建无限个对象,类是对象的模版,面相类就等于面向对象;
示例代码:面向对象编程的基本组成
package 第一章;
class person{
private String name;
public person(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void print() {
System.out.println("这个person名字是:"+name);
}
}
public class A {
public static void main(String[] args) {
// TODO 自动生成的方法存根
person pe = new person("小白码");
pe.print();
}
}
输出结果
这个person名字是:小白码
一个类定义了一种新的数据类型,例如Integer是一个类,那么1,2,3都是具体的他的对象。
对象
1.声明对象
例如:
Flower aFlower; //aFlower是 Flower类型的一个对象
2.对象实例化:
aFlower = new Flower(); //创建一个Flower的实例赋给aFlower
即
对象 = new 构造方法(参数);
3.创建了实例成员变量后,可以引用对象中的成员变量,调用对象方法。
对象.成员变量
例如:
aFlowr.color = "red"; //调用成员变量
aFlower.setAttribute("red","rose"); //调用对象的方法
成员变量
1.声明类,其中加入成员变量。
class person{
private String name;
private int age;
}
2.成员变量的初始化
声明成员变量,可以按照指定类型对其进行初始化,也可以是另外的方法调用的表达式,唯一要求就是初始化的值是正确的。在这里就不给出代码示例了。
3.成员变量默认值
可见各种类型成员变量的默认初值
构造方法
1.声明构造方法
构造方法必须与类名相同,构造方法的返回就是该类的一个实例;
package 第一章;
class person{
private String name;
public person(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void print() {
System.out.println("这个person名字是:"+name);
}
}
public class A {
public static void main(String[] args) {
// TODO 自动生成的方法存根
person pe = new person("小白码");
pe.print();
}
}
例如该代码块中就声明了构造方法。
new构造方法后,系统为对象的成员变量的分配内存,执行构造语句,返回一个引用给对象变量。
2.构造方法与普通成员方法不同之处
(1)构造方法名称必须与类名相同
(2)构造方法用于创建实例,对实例初始化 。而成员方法实现对类中成员变量的操作。
(3)构造方法不能没返回值,默认会有返回对象。
3.构造方法使用说明
(1)一个类没有生命构造方法时,Java会自动生成一个默认的无参构造。
(2)当声明了一个有参的构造方法时,Java不再生成无参构造,如果需要有多重构造方法,则需要重载。
(3)其他函数不能调用构造函数。
方法的重载
一个类中有许多同名的方法但是带的参数不一样,称谓方法的重载。
static int abs(int a)
static long abs (long a)
static float abs (float a)
static double abs (double a)
指定参数的构造方法
public void person(String name,int age) {
this.name = name;
this.age = age;
}
无参构造方法
public void person() {
}
拷贝构造方法
public Flower(Flower aFlower){
color = aFlower.color;
name = aFlower.name;
}
使用有参构造在括号中添加对应的数据类型的值
使用拷贝构造括号内是要拷贝的实例。
总结
例如:以上就是今天复习的内容,本文介绍并不是特别详细,由于作者时间有限,所以每一章的篇幅应该不会太长,但是我会抽出时间继续下一章的内容。
欢迎阅读,如有错误欢迎联系作者指正!