一: 面向对象三大特性:
1.封装:对外部不可见
封装的实现:java中实现封装性有多种方式,而private只是其中一种比较常用的方式.类中每一个属性都必须封装.
private 属性类型 属性名称;
private 方法返回值类型 方法名称(参数列表){}
package Nsbc.club;
public class Person {
public static void main(String[] args) {
Persons persons = new Persons();
persons .name = "nishui";
persons .age = 21;
persons.tell();
}
}
class Persons{
private String name;
private int age ;
public void tell(){
System.out.println("姓名:" + this.name +",年纪:" +this.age);//加上this代表本类中的属性或者方法
}
}
以上代码为错误代码,这体现了类的封装性(private 私有的),就是外部不可访问,但是我们设定的这些属性肯定要表示出一些实际的意义,那么这些属性就应该由外部设定,怎样访问?Java中提供了setter(设置内容)方法和getter(获得设置内容)方法,方法如下:
package Nsbc.club;
public class Person {
public static void main(String[] args) {
Persons persons = new Persons();
persons.setName("nishui");
persons.setAge(21);
persons.tell();
}
}
class Persons{
private String name;
private int age ;
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;
}
public void tell(){
System.out.println("姓名:" + this.getName() +",年纪:" + this.getAge());//加上this代表本类中的属性或者方法
}
}
2.继承:扩展类的功能
3.多态:
(1)方法的重载
(2)对象的多态性
二:类和对象
(1) 类:是对某一事物的描述,是抽象的。
(2)对象:是实际存在的,为该类事物的每个个体 ,也称为实例。
类就相当于模版,而根据模版生产出来的东西就为对象;比如:如果类为一张汽车设计图纸的模版,那么生产出来的汽车就为对象!
一个类产生之后,不能直接使用,要产生对象才能使用;
(1)类名 对象名称 = null;//声明对象
对象名称 = new 类名();//实例化对象就是为其开辟堆内存空间
(2)类名 对象 = new 类名();
声明对象:是在栈内存中声明的,跟数组一样,数组名也是存放在栈内存中的.但是只开辟了栈内存空间,对象是无法使用的,必须有其堆内存的引用才可以使用;
实例化对象:new 类名();在堆内存中开辟空间,在其内存放的变量值都为默认值(没有对变量赋值);
例如:
String:是一个字符串类型,但他本身为一个类,是一个引用数据类型,所以此时他的默认值为null;
int是一个整型,代表的是一个数,所以他是一个基本数据类型,此时的默认值为0.
对象是保存在栈内存中,属性是保存在堆内存中.在程序中方法是保存在全局代码区中的.
此区中的内容是所有对象共享的!
注意:在使用对象的时候,对象必须是被实例化之后才可以使用,而对象的实例化不仅仅只是使用new关键字实现,只要有其堆内存的空间指向,则就表示实例化成功.(如果不实例化对象,就使用它,就会发生空指向异常!)一个栈内存只能指向一个堆内存空间.