1.面向对象的三大特征
1.1封装性:
2.类与对象的定义
类是对某一事物的描述,是抽象的、概念上的定义;对象是实际存在的该类事物的每个个体。
3.在一个方法中的变量不会自动初始化,声明时要初始化
4.对象声明周期:
5.对象的比较==和equals()
==用于比较两个变量是否相等(类的引用),equals()比较两个对象的内容
如果对象只调用一次,可以使用匿名对象
new Person().shout();
6.强内聚、弱耦合
强内聚:功能尽量在类的内部完成
弱耦合:尽量给外面提供较少的调用
7.无参构造函数,当对象生成时就被调用
package com.saly.javabase;
class Person {
//外部类访问其他类的私有变量必须通过成员方法调用
private int age;
private String name;
void shout(){
/*
* int age = 10;
* 如果方法中的变量跟类中的变量相同,则类变量被覆盖
* 注:方法中的变量必须要初始化
*/
System.out.println("my age is "+age);
}
/*构造函数:
* 无参、无返回值、没有void
* 无参构造函数,当对象生成时就被调用
* 可以用来做初始化工作
*/
public Person(){
//age = 15;//做初始化工作
System.out.println("构造函数");
}
public Person(int age){
this.age = age;
}
public Person(int age,String name){
this(age);//一个构造方法调用另一个构造方法,把参数传进去
//this.age = age;
this.name = name;
}
public void getSomeBody(Person p){
p.shout();
}
//finalize 垃圾回收
public void finalize(){
System.out.println("object is going");
}
public static void main(String[] args) {
String str1 = new String("abc");
String str2 = new String("abc");
String str3 = str1;
//==用于比较两个变量是否相等(类的引用),equals()比较两个对象的内容
//比较引用
if(str1==str2){
System.out.println("str1==str2");
}else{
System.out.println("str1!=str2");
}
if(str1==str3){
System.out.println("str1==str3");
}else{
System.out.println("str1!=str3");
}
//比较内容
if(str1.equals(str2)){
System.out.println("str1.equals(str2)");
}else{
System.out.println("!str1.equals(str2)");
}
Person p1 = new Person();
Person p2 = new Person();
//同一个类中的私有变量是可以被访问的
p1.getSomeBody(p2);
//如果对象只调用一次,可以使用匿名对象
new Person().shout();
//给一个函数传递对象时,用匿名对象
getSomeOne(new Person());
//对象创建完成就成了垃圾
new Person();
new Person();
//对象被移除内存之前调用finalize方法
System.gc();//调用垃圾回收器回收垃圾
}
public static void getSomeOne(Person p){
p.shout();
}
}