码迷,mamicode.com
首页 > 编程语言 > 详细

Java oop(一些自己的理解,并没有展开很细)

时间:2018-04-17 23:53:42      阅读:328      评论:0      收藏:0      [点我收藏+]

标签:产生   子类   接口   string   抽象   理解   怎么办   此刻   细节   

一下内容是自己总结用的,只是按照自己的理解去写。参考的是菜鸟教程。
Java 是一个面向对象的语言。
OOP就是面向对象编程。
封装:在某些类里面,某些属性不想向外暴露,但是我们又想提供一个方法去访问或修改它,怎么办?
封装此刻就是解决这个问题:
如有一个Student类

public class Student{
//构造函数,可以写可以不写,不写就默认用Java提供的默认构造函数

private int number;

private String name;

public void setNumber(int number){
this.number = number;
}

public int getNumber(){
return this.number;
}

public void setName(String name){
this.number = number;
}

public int getName(){
return this.name;
}
}

此刻,Student类的俩个属性是private(私有)的,我们不能直接用:
Student stu = new Student();
stu.number = 4;
stu.name = "test";

但是方法是public(公共)的,我们可以通过调用这些方法去写入或获得这俩个私有属性:
Student stu = new Student();
stu.setNumber(4);
stu.getNumber;
stu.setName("test");
stu.getName;

这就是对类的封装,封装有什么好处?

1. 良好的封装能够减少耦合。


2. 类内部的结构可以自由修改。


3. 可以对成员变量进行更精确的控制:
类的成员变量可以成为只读或者只写的。
例如访问器getXxxx();修改器setXxxx(); 通过这些可以控制读写权限


4. 隐藏信息,实现细节:
比如这是一个类中得到生日的方法
public String getBirthday(){
return year + "-" + month + "-" + day;
}

public void setBirthday(String birthday){
//拆分字符串,分别取出年月日,给year、month、day进行赋值
}

而在外部调用这个方法的时候
this.getBirthday();
this.setBirthday("1990-9-9");

此时就体现出外部是不知道如何储存birthday这个方法的,用户只能调用它。


继承
Java里,可以让一个子类去extend(继承)一个父类,并且一个子类只能继承一个父类,
子类会继承父类的所有方法。
而在这些方法中,只要不该方法名称 和其参数类型和数量,只对方法里面的代码进行重写,则叫重写,
如果这些方法中,名称不变,但是参数类型有变,或者参数数量有变,又或者俩者都有变,则叫重载。
重写和重载是多态的一部分。

当然有可能父类是个抽喜类,子类继承抽象类则要对父类里的抽象方法加上具体的代码,如果没有则子类中的这个方法也要声明为抽象方法,子类则声明为抽象类,默认public。
由子子类去继承实现抽象方法(你也可以继续上面的情况)。

多态
一个工具,不同的使用就产生不同的结果或行为。
多用于接口?
其中重写和重载是多态的重要部分。
重写要有继承,并且发生在俩个类之间(父子类)
重载发生在一个类之间。

 

Java oop(一些自己的理解,并没有展开很细)

标签:产生   子类   接口   string   抽象   理解   怎么办   此刻   细节   

原文地址:https://www.cnblogs.com/stfzhuang/p/8870581.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!