Java面向对象

目录

一、元空间、计数器、线程

二、属性和成员变量

三、创建对象-克隆

四、总结


一、元空间、计数器、线程

元空间:jdk1.7之前元空间还不元空间,1.7前是方法区,1.7后改名为元空间,因为类的信息占空间,所以在1.8正式选择将其放入本地内存。
计数器:有指令集,进入操作系统进行操作。
线程:每个线程都会开辟新的区域存放,线程内数据资源不共享,比如线程A内定义一个a,线程B 内也定义一个a,那么输入寻找a的时候程序分不清是A内还是B内的,所以线程内数据资源不共享。

二、属性和成员变量

属性,成员变量和全局变量的概念其实是一样的,只是不同场景的称谓不同

public class Student {
    String name;
}

上面代码里的name就是student的属性

package com.svt.boke;

import java.util.Scanner;

public class Student {
    String name;
    int i;

    public static void main(String[] args) {
        Student student=new Student();
        student.score();
    }
    Scanner sc=new Scanner(System.in);

    public void score(){
        System.out.println("请输入学生成绩");
        int i =sc.nextInt();
        if (i>=60){
            System.out.println("及格");
        }else
            System.out.println("不及格");
    }
}

上述代码定义了一个i,是类的成员变量,就不是属性了,因为i是个没意义的字母,不对类造成影响

三、创建对象-克隆

 创建对象的方式有很多种,最简单的通过一个new关键字创建对象,其次则是通过方法调用创建对象,在其方法内部创建并返回新的对象,还有反射通过newInstance()创建,下面详细讲一下个人理解的浅薄克隆创建对象知识。

克隆,所有属性方法都会克隆一份(除地址)

package com.svt.clone;

public class A implements Cloneable{
    String name;
    public static void main(String[] args) {
        A a=new A();
        a.name="小圆";
        try {
            A b= (A) a.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
    }
}

在栈堆内的操作则是先将定义的a入栈,在堆内开辟一块新地址空间001,a指向堆内001地址的空间,并且赋值为“小圆”,由于b是克隆的a,那么b则会连带着赋值一起克隆,b指向的002新地址内的值也会成为“小圆”,这就是浅克隆,浅克隆意味着如果修改A的属性值,那么克隆的对象也会受之影响,如果name从小圆变成了小奎,那么002内的“小圆”也会变成“小奎”。

class B{
    String name;
}

class A implements Cloneable{
    B b;

    public A(B test) {
    }

    public static void main(String[] args) {
        B test=new B();
        test.name="小圆";
        A a=new A(test);
        try {
            A b= (A) a.clone();
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
    }
}

给test赋值name为小圆,然后有参赋值给a,输出b克隆a,此时001指向test新开辟的空间003,所以a输出的也是小圆,而b因为完全克隆a,所以连这个指向地址也是克隆的,所以此时还是浅克隆,下面修改一下当前代码,使之成为深克隆。

package com.svt.clone;
class B{
    String name;
}

class A implements Cloneable{
    B b;

    public A(B test) {
    }

    @Override
    public Object clone(){
        this.b=new B();
        b.name="小奎";
        return null;
    }
    
    public static void main(String[] args) {
        B test=new B();
        test.name="小圆";
        A a=new A(test);
        A b= (A) a.clone();
    }
}

 

重写了方法,解决了原有对象对克隆对象的影响

 克隆可以用于扩展,创建大量对象副本,当你要很多对象的时候,一个一个new的实在是太慢,这时候克隆就派上了大用场

四、总结

  • 因为要通过类名调用,所以称为类方法,类方法也叫静态方法
  • IO效率:代码写完放在磁盘内,要运行时再从磁盘内放入内存运行
  • 接口修饰符不能用protected,接口默认public,但是private、default和static也可以用,但是要在小括号后加上{},也能写代码块,这是jdk1.8后新增的,,但我们通常还是说接口内一般都是抽象方法
  • 除了静态(属性)和动态(方法)描述,其余不可再描述类
  • 方法重写注释@Override 
  • 方法重载注释@Overload
  • 任何类都有父类,就是object,是隐式的
  • 子类独有的属性方法只能在子类的对象上被调用,而不能在父类的对象上被调用

  • 一个类只能继承一个类,单继承特性

  • 一个类可以实现任意数量的接口

  • 接口和接口是多继承关系 比如 interface C extends B,A{}

  • 类有多层继承但是没有多继承

  • 抽象类实现接口可以不用重写,无意义

  • 抽象方法一定需要子类实现

  • 常量命名规则需要所有单词全部大写,多个单词下划线隔开

  • 代码块执行顺序 静态代码块->初始化块->方法块

  • 连接数据库的时候就写在静态代码块内,这样构建一次获取数据库连接就可以一直使用

  • 接口是对行为的抽象(接口相当于是一套标准)

  • 抽象类是对类的抽象,接口是对方法的抽象

至此Java面向对象的知识点基本总结完毕,有一些是后续会学,先补充学习的! 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Java面向对象编程电子书是一本详细介绍Java面向对象编程概念、原理和实践的电子书籍。本书从基础概念开始,逐步深入到高级主题,使读者能够全面理解Java面向对象编程的核心思想和技术。 首先,本书会介绍面向对象编程的基本理念和原则,例如封装、继承和多态等。读者将能够了解到如何使用Java语言中的类、对象和方法来实现这些概念,并学会如何通过类和对象之间的关系来进行数据和行为的组织。 接着,本书将详细介绍Java中的类和对象的创建、属性和方法的定义以及对象之间的交互。读者将学会如何使用构造函数来创建对象实例,并掌握如何在类中定义属性和方法,并使用它们来访问和修改对象的状态。 另外,本书还会涵盖继承和多态的概念和实践。读者将了解到如何通过继承来创建子类,并使用多态来实现不同对象之间的统一接口。这些技术将大大提高代码的可复用性和可扩展性。 此外,本书还会介绍Java面向对象编程中的其他重要概念,如抽象类、接口、封装和设计模式等。这些概念和技术将使读者更加熟悉Java面向对象编程的整体框架,并能够应用到实际的开发中。 总而言之,Java面向对象编程电子书是一本很好的学习资料,它详细介绍了Java面向对象编程的基本概念、原则和实践。读者通过学习本书,将能够深入理解并掌握Java面向对象编程的核心思想和技术,从而提高自己的编程能力和应用水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今年不养猪只除草

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值