OOP
Oriented object program 面向对象编程
OOA
Oriented object analyze 面向对象分析
OOD
Oriented object design 面向对象设计
面向对象:
面向对象的特点:
1.是一种符合人们思考习惯的思想
2.可以将复杂的事情简单化
3.将程序员从执行者转换成了指挥者
4.完成需求时:①先要去找具有所需功能的对象来用 ②如果该对象不存在,那么创建一个具有所需功能的对象 简化开发并提高重用
面向对象的特征:1:封装 2:继承 3:多态
封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处:1.将变化隔离 2.便于使用 3.提高重要性 4.提高重要性。
封装原则:1.将不需要对外提供的内容都隐藏起来 2.把属性都隐藏,提供公共方法对其访问。
private (私有) 关键字(私有是封装的一种表现形式)
1.是一个权限修饰符。 2.用于修饰成员(成员变量和成员函数)3.被私有化的成员只在本类中有效
常用之一:将成员变量私有化,对外提供对应的set,get方法对其进行访问。提高对数据访问的安全性。
类:对现实事务的软件抽象。--> 对象:对象即是该类事物实实在在存在的个体
类的定义:1.生活中描述事物无非就是描述事物的属性和行为。2.java中用类class来描述事物:属性(对应类中的成员变量)行为(对应类中的成员函数)3.定义类其实在定义类中的成员(成员函数【方法】和成员变量【属性】)
public static void main(String[] args) {
//创建对象
//局部变量
Person p = new Person(); //p是类类型变量,类类型变量指向对象。
//调用函数的方法
p.run();
}
}
class Person {
//成员变量==属性(property)==字段(filed)
int height;
int weight;
int age;
//定义函数
public void run() {
System.out.println(age + "--run.........");
}
}
堆:数组和对象 栈:方法在这里
成员变量和局部变量的区别:
成员:1.成员变量定义在类中,在整个类中都可以被访问。2.成员变量随着对象的建立而建立,存在对象所在的内存中。3.成员变量有初始值
局部:1.局部变量只定义在局部范围内 (函数和语句)2.局部变量存在于栈内存中 3.作用范围结束,变量空间会自动释放 4.局部变量没有默认的初始值。
java VM调整堆大小
java -X //查看java非标准输出帮助
java -Xmx100m //设置jvm的堆空间的最大值
java -Xmsm //设置jvm的堆空间初始值
匿名对象
new Person().run();
//匿名对象-作为参数进行传递
匿名对象:
1.匿名对象是对象的简化形式。
2.匿名对象的两种使用方法:①对 对象方法仅进行一次调用的时候,如果对一个对象进行多个成员调用,必须给这个对象起名字。②匿名对象可以作为实际参数进行传递。
构造函数:
特点:1.函数名和类同名。2.不用定义返回值类型3.没有具体的返回值(创建之后肯定返回的该对象)4.如果类没有定义构造函数,jvm会分配一个空构造。如果类定义了构造函数,没有空构造。
作用:给对象进行初始化。
注意:默认构造函数的特点(无参)。多个构造函数是以重载的形式存在。
什么时候定义构造函数呢?
当分析事物时,这事物存在具备一定的特性或者行为,那么将这些内容定义在构造函数中。
①空构造
public static void main(String[] args) {
Dog d = new Dog();
//设置属性调方法
d.setColor("黄色");//调用setColor函数设置颜色
//获取颜色调方法
System.out.println(d.getColor());
}
}
class Dog {
private String color;
private int age;
public Dog(){
}
//设置属性
public String getColor() {
return color;
}
//获取颜色函数
public void setColor(String c) {
color = c;
}
}
②构造函数传一个参数
public static void main(String[] args) {
Dog d1 = new Dog("白色");
System.out.println(d1.getColor());
}
}
class Dog {
private String color;
private int age;
public Dog(String c) {
color = c;
}
public String getColor() {
return color;
}
//获取颜色函数
public void setColor(String c) {
color = c;
}
}
三:
public static void main(String[] args) {
Car c = new Car(4,"黑色");
System.out.println(c.getTires() + c.getColor());
}
}
class Car {
private String color;
private int tires;
public Car(int t,String c){
tires = t;
color = c;
}
public int getTires() {
return tires;
}
public void setTires(int tires) {
this.tires = tires;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
}
构造代码块:定义的是不同对象共性的初始化内容。
package com.test;
public class HelloWorld {
public static void main(String[] args) {
//Person p=new Person();
Person p1=new Person("李四");
p1.speak();
}
}
class Person{
private String name;
private int age;
/*构造代码块
作用:给对象进行初始化。
对象一建立就运行,而且优先于构造函数执行。
和构造函数的区别:
构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象初始化
*/
{
System.out.println("Crying....");
}
public Person(){
//System.out.println("name="+name+",age="+age);
}
public Person(String n) {
name=n;
//System.out.println("name="+name+",age="+age);
}
public void speak() {
System.out.println("name="+name+",age="+age);
}
}