面向对象设计的过程
也就是从现实世界中抽象出程序开发中的类,实现从现实到虚拟的转化,再对抽象出的类进行操作,实现对现实世界行为的模拟,然后对抽象出的类进行优化,通过封装隐藏类的内部信息以提高安全性。
面向对象的核心
对象面向过程的核心是函数,以功能为中心,实现函数级别的代码重用。面向对象的核心是封装了属性和方法(行为)的类,以数据为中心,实现类级别的代码重用。面向对象因为采用了类,所以具有继承和多态特性,可以进一步重用代码和简化编程,而面向过程中没用继承和多态特性。
对象和类的区别与联系 :世间万物皆对象,类是封装对象的属性和行为,类是对象的抽象,而对象是类的实例。
2.定义类的方法:(1)定义类
(2)编写属性
(3)编写方法
- 封装的好处和步骤 :(1) 提高了数据的安全性: 别人不能够通过 变量名.属性名 的方式来修改某个私有的成员属性。
(2)操作简单: 封装后,多个调用者在使用的时候,只需调用方法即可,调用者不需要再进行判断。
(3)隐藏了实现实现过程对调用者是不可见的,调用者只需调用方法即可,不知道具体实现过程。
原文链接:https://blog.csdn.net/qq_34801506/article/details/81005950
- 方法重载: 如果一个类中包含了两个或两个以上的方法,他们的方法名相同,方法参数的个数或参数类型不同 ,则称该方法被重载了,这个过程称为方法重载,成员方法和构造方法都可以重载。 示例: System.out.println(45);
System.out.println(true);
System.out.println(“狗狗在玩耍”); - 方法重载的判断依据:(1)必须在同一个类里。
(2)方法名相同。
(3)参数列表(方法参数的个数和参数类型)不同。
(4)与方法返回值和方法修饰符没有任何关系。
示例:
package basetest;
/**
*
* @author Administrator
*案例分析:对于main最后一行代码有两个坑
*1.调用的是Test类的哪一个方法?
*这一步看重载
*2.对于传递的参数(son),方法体重调用的是谁的方法
*这一步看重写 调用的是子类的方法
*
*
*/
public class OverrideDemo {
public static void main(String[] args) {
Father father = new Son();
father.show();//运行期绑定:重写看对象(new的是谁调谁的方法)
Test test = new Test();
test.test(father);//编译器绑定:重载看引用(等号前的类型是谁调谁的方法)
}
}
class Test {
void test(Father father){
System.out.println("父型参数");
father.show();
}
void test(Son son){
System.out.println("子型参数");
son.show();
}
}
class Father {
protected void show(){
System.out.println("我是老子!");
}
}
class Son extends Father{
/**
* Cannot reduce the visibility of the inherited method from Father
不能减少来自继承方法的可见性
子类访问权限要大于父类
*/
/* void show(){
}*/
public void show(){
System.out.println("我是儿子!");
}
public void show(String name){
System.out.println("我是儿子:名字是"+name);
}
}
原文来自:百度文库(风之谷浴火重生)
6. 对类进行封装: 通过private、protected、public和默认的权限控制符来实现权限的控制
封装时会用到多个权限控制符来修饰成员变量和方法,区别如下:
(private):成员变量和方法只能在其被定义的类中被访问,具有类可见性。
(默认):成员变量和方法只能被同一个包里的类访问,具有包可见性。
(protected):可以被同一个包中的类访问,被同一个项目中不同包中的子类访问。
(public):可以被同一个项目中的所有类访问,具有项目可见性,这是最大的访问权限。