Java面向对象

1.  面向对都有哪些特性以你对特性的 

1得到过程被称基类承信派生软件装程序中素的重要 

2 封装:通常认为封是把数据和操作数据的法绑定起来,对数据的访问只能通过已定义的接。面向象的本质就是将现实世界描绘成一系列完全自治、封闭的对象。我们在类中编写的方法就是对实现细节的一种封装我们编写一个类就是对数据和数据操作的封装。可以说,封装就是隐藏一切可隐藏的东西,只向外界提供最简单的程接口 

3 多态性:多态性是允许不同子类型的对象同一消息作出不同的响。简单的说就是用同样对象引调用同样的方法但是做了不同的事情。多态性分为编译时的多态性和运行时的多态性。如果将对象的方法视为对象外界提行时的多A访B服务B服务一切对 A 系统说都透明。方重载overload实现的编译时多态(也为前,而法重写(override行时绑定态是面向西要实做两件1. 类继已有2. 引用对象,同样对象的行 

4象的造类象和象只注对象有不关什么 

注意向对34,那们就抽象加上去。 

2.  访问权修饰publicprivateprotected, 时的(2017-11-12) 

该题权限 

修饰 

当前 

  

  

其他 

public

 

 

 

 

protected 

 

 

 

× 

default

 

 

× 

× 

private 

 

× 

× 

× 

3.  如何理clone对象 

3.1为什么要clone 

在实常常一个 A一时A 已经值,此时可能会一个A同新BB AAB独立的对B值是AJava语言的赋句是种需求虽clone其中最简 

3.2 new一个对象的过clone一个象的程区 

new分配执行new作符先去new作符类型为知道了型,才能存空之后再调充对象的叫做对象化,

构造方法返回后,一个对象创建完毕,可以把他的引用(地址)发布到外部,在外部就可以使用这个引用操纵这对象 

clonenew相似clone分配的内clone的对使用原完成clone法返同的对把这到外 

3.3 clone对象的使用 

3.3.1和复的区 

1. Person p = new Person(23, "zhang"); 

2. Person p1 = p; 

3. System.out.println(p); 

4. System.out.println(p1); 

Person p1 = p;后, 象吗  

1com.itheima.Person@2f9ee1ac 

2com.itheima.Person@2f9ee1ac 

可以是相相同个对pp1而已他们都指Person(23, zhang)  用的执行完成 内存中 

而下的克 

1Person p = new Person(23, "zhang");

2Person p1 = (Person) p.clone();

3System.out.println(p);

4System.out.println(p1);

从打个对也就 地址赋给了一

新的 

1. com.itheima.Person@2f9ee1ac

2. com.itheima.Person@67f1fba0

3.3.2 拷贝 

上面中,Person 中有,分别是 name  age  name  String   age  int 

型。所示 

1public class Person implements Cloneable{ 

2privatint age ;

3    private String name; 

4    public Person(int age, String name) { 

5        this.age = age;

6        this.name = name; 

7    }

8    public Person() {}

9    public int getAge() { 

10        return age;

11    }

12    public String getName() { 

13        return name;

14    }

15    @Override
16    protected Object clone() throws CloneNotSupportedException { 17        return (Person)super.clone(); 

18    }

19}

age类型 有什么疑将一4的整name String的, 是一 正的 String它的拷贝有 接将中的 name 新对 name 段, 或者 Person  name 字符串对一个新的将这用赋贝的 Person 对象的 name 这两种拷别叫做

下面如果 Person 象的 name  明两 name 都指向同String 贝,  name 的地 么就String  就是在Person时候 nameString 就是 

1. Person p = new Person(23, "zhang"); 

2. Person p1 = (Person) p.clone(); 

3. String result = p.getName() == p1.getName() 

4.         ? "clone是浅拷贝的" : "clone是深拷贝的"; 

5. System.out.println(result); 

打印为: 

6. clone是浅拷贝的 

所以clone行的是浅 序时要注 

如何 

由上如下贝一须要Cloneableclone

方法clone 内部他对 clone份,这就象必实现

Cloneableclone那么上面论,实  BodyHead,要拷贝

BodyBodycloneHead类也 

1static class Body implements Cloneable{ 

2    public Head head;

3    public Body() {}

4    public Body(Head head) {this.head = head;} 

5    @Override

6    protected Object clone() throws CloneNotSupportedException { 

7        Body newBody =  (Body) super.clone();

8        newBody.head = (Head) head.clone(); 

9        return newBody;

10    }

11}

12static class Head implements Cloneable{ 

13    public  Face face; 

14    public Head() {}

15    @Override

16    protected Object clone() throws CloneNotSupportedException { 

17        return super.clone(); 

18    }  }

19public static void main(String[] args) throws CloneNotSupportedException { 

20    Body body = new Body(new Head(new Face())); 

21    Body body1 = (Body) body.clone(); 

22    System.out.println("body == body1 : " + (body == body1) ); 

23    System.out.println("body.head == body1.head : " +  (body.head == body1.head)); 

24}

打印为: 

1. body == body1 : false 

2. body.head == body1.head : false 

你可能感兴趣的:(java,开发语言)