1 import java.util.Scanner; 2 3 public class PersonDemo { 4 public static void main(String[] args){ 5 6 person p1 = new person("Xiaolei", 20); 7 p1.setName("lifang"); 8 String newname = p1.getName(); 9 System.out.println(newname); 10 11 12 } 13 } 14 15 class person{ 16 String name; 17 int age; 18 person(String name, int age){ 19 20 System.out.println(name + " age is " + age); 21 cry(); 22 } 23 24 25 public void setName(String n){ 26 name = n; 27 } 28 public String getName(){ 29 return name; 30 } 31 32 public static void cry(){ 33 System.out.println("cry..."); 34 } 35 }
最近学完了core java的第四章类与对象部分,仍是以为要来作一个总结,由于不少特性在学习后会开始遗忘,好记性不如烂笔头。java
java是一门面向对象的语言。函数
类学习
类是是一个具备相同特性的全部元素的大集合,是建立的对象模板存放的地方,建立的对象成为类的实例。每要建立一个对象,它就要有相对应的类,类中有对象的属性,对象的初始化,对象所依赖的方法等。this
类与类之间有三个关系spa
1.依赖 一个类须要访问另外一个类里面的信息设计
2.继承 一个类B和类A有关系,可是B存在除了A之外的多余功能,那么就说类B继承类A。A成为超类,B称为子类。如经理manager是超类,员工staff是子类。用extends关键字code
class B extends A { }
所以,子类的功能比超类更丰富,在设计类的时候应该将通用的方法放在超类中,而将特殊的功能放在子类中。当须要调用子类继承超类的变量时,用super关键字,如super.risemoney。对象
在继承的时候,子类惟一没有继承的是超类的构造方法,因此要用super关键字来指定调用超类中的构造方法。blog
B(){继承
super(参数列表);
}
不然就会出现错误。由于java不会给已经有了构造函数的类自动添加构造方法。因此解决办法也能够在原来的超类中自动添加一个空的构造函数。
3.聚合
在实现一个类的时候,因为公有数据十分危险,因此应当将全部的数据域设计为私有的,经过private关键字。
对象
//这样很影响代码的阅读性
class person { String name; int age; person(String name, int age) { name = name; age = age } }
因此使用this关键字就是区分隐式参数和显式参数。显式参数即在括号内的参数,隐式参数没有直接传递到。
//这是修改后的代码 class person { String name; int age; person(String name, int age) { this.name = name; this.age = age } }
this的做用能够理解为引用的的对象替代。这个写法能够将实例域和局部变量明显的区分开。
final实例域
若是在构造器构造一个值之后,某个域在后续的操做中不能再修改,那么使用finnal关键字。 private final String name
静态域与静态方法
static关键字
静态域是全部类都共有(共享)的一个域,每一个域都会在这里得到一份拷贝。即若是好几个类都会有相同的部分,操做或者是实力域,那么能够建立一个静态的类,在里面放这个共享的东西。若是不加static关键字的话,那么只有这个类的对象能够调用。
构造函数是对对象进行的封装
将对对象的操做,包括功能,判断等进行封装,由对象进行调用
对某些数据用private修饰能够隐私化,这些数据不能被篡改,只能经过对应的修改和取得方法去改变
匿名内部类
new 父类/接口() {
//类本体操做
};