java学习总结02

 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是一门面向对象的语言。

类是是一个具有相同特性的所有元素的大集合,是创建的对象模板存放的地方,创建的对象成为类的实例。每要创建一个对象,它就要有相对应的类,类中有对象的属性,对象的初始化,对象所依赖的方法等。

类与类之间有三个关系

1.依赖 一个类需要访问另一个类里面的信息

2.继承 一个类B和类A有关系,但是B存在除了A以外的多余功能,那么就说类B继承类A。A成为超类,B称为子类。如经理manager是超类,员工staff是子类。用extends关键字

class B extends A
{

}

因此,子类的功能比超类更丰富,在设计类的时候应该将通用的方法放在超类中,而将特殊的功能放在子类中。当需要调用子类继承超类的变量时,用super关键字,如super.risemoney。

在继承的时候,子类唯一没有继承的是超类的构造方法,所以要用super关键字来指定调用超类中的构造方法。

B(){

super(参数列表);

}

否则就会出现错误。因为java不会给已经有了构造函数的类自动添加构造方法。所以解决办法也可以在原来的超类中自动添加一个空的构造函数。

3.聚合

在实现一个类的时候,由于公有数据十分危险,所以应当将所有的数据域设计为私有的,通过private关键字。

对象

 对象有三个主要的特性
1.对象的行为———— 可以对对象施加哪些操作,可以对对象施加哪些方法。
2.对象的状态———— 当施加那些方法的时候对象是怎么响应
3.对象的标识———— 如何辨别具有相同行为和状态的不同对象
 
对象在类中定义的属性称作实例域,方法用于操作对象以及存取它们的实例域
 
每次创建对象后,要用构造器对对象进行初始化。
1.构造器名与类相同
2.每个类可以有一个以上的构造器
3.构造器有0个1个或多个参数
4.构造器没有返回值
5.构造器总是伴随着new操作一起调用
构造器和函数可以重载,重载是名字相同但参数不同,包括类型或者数目。
构造器中可以有个初始化块,它是每一个构造器所共有的部分。格式是一个大括号括好的部分
this关键字
如果代码这么写
//这样很影响代码的阅读性
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 父类/接口() {

//类本体操作

};


原文地址:https://www.cnblogs.com/xiaolei-meow/p/6528304.html