1.面向对象

面向对象的特点:封装、继承、多态、抽象

  • 封装:封装是把过程和数据包围起来,对数据的访问只能通过已定义的接口。封装是一种信息隐藏技术,在java中通过关键字private,protected和public实现封装。 适当的封装可以让程式码更容易理解和维护,也加强了程式码的安全性。
  • 继承:继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
  • 多态:多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作
    抽象

温馨提示:对象与实例是同一个概念,创建一个对象就是创建一个实例。程序员最不缺的就是对象,想要自己就new一个呗。

2.类

public class A {
	//成员属性
	private String name;
	private int age;
	
	//构造方法,一般用于对象的初始化
	A(String name,int age)
	{
		super();//这个super是默认隐藏的,继承父类的构造方法。
                this.name=name;
                this.age=age;
	}
	
	//toString方法,默认返回哈希值
	 public String toString() 
	 {

	        return getClass().getName() + "@" + Integer.toHexString(hashCode());

	 }
	 
	 //equals方法,判断内存地址是否相等
	 public boolean equals(Object obj) 
	 {
		    return (this == obj);
	 }

          public String getName() {//获取名字的接口
		return name;
	}

	public void setName(String name) {//设计名字的接口
		this.name = name;
	}

	public int getAge() {//获取年龄的接口
		return age;
	}

	public void setAge(int age) {//设置年龄的接口
		this.age = age;
	}	 
}

注意:

  • 类由成员数据(属性)和方法两部分构成,一般用private修饰成员数据用于保护隐私,通过设置get和set方法给用户提供访问的接口,以此来提高安全性。
  • 构造方法继承自父类,一般可以通过改写构造方法给一个对象进行初始化
  • toString、equals方法都继承自Object类,new一个对象就默认继承了这些方法,可以改写它们实现更多功能。

3.访问控制修饰符

修饰符

同类

同包

子类

外部包

public





protected




default



private


4.其它修饰符

  • static:静态变量;静态方法;修饰后成为共享数据。
  • final: 常量;固定方法;修饰后相当于上锁,不可修改!
  • transient: 修饰非静态变量,
  • volatile: 修饰非静态变量,
  • abstract: 抽象方法;
  • synchronized: 只能修饰方法;

5.this与super

  • this与super的使用能避免歧义,方便理解代码;
  • 读代码时this完全可以替换成本类的类名,super完全可以替换成父类类名!
class Fu{
    String name;
    int age;
    Fu()
    {
    	this.say();//相当于Fu.say();
    }
    public void say()
    {
    	System.out.println("我是小头爸爸");
    }
}
class Son extends Fu{
    Son(){
        super();//相当于Fu();
    }
    Son(String name,int age){
        this();//相当于Son();
        this.say();//相当于Son.say();
        this.name=name;//相当于Son.name=name;
        this.age=age;//相当于Son.age=age;
    }
    
    public void say()
    {
    	System.out.println("我是大头儿子");
    }
}


public class A {
	public static void main(String[] args)
	{
		new Fu();
		new Son("大头儿子",6);
	}
}

运行结果:

我是小头爸爸
我是大头儿子
我是大头儿子

注意:

  • this()是调用本类的构造函数,super()是调用父类的构造函数
  • 子类永远都不会执行父类方法,执行的是从父类继承或重写的方法。

日出东方,年轻的侠客披上斗篷。 自此,诗酒天涯,琪琚佩剑。