Java-this指针、Static关键字、代码块、Package、Import、面向对象的三大特征(继承 封装 多态)、访问控制符

【0基础学java】教学日志:javaSE-面向对象3-this关键字、static关键字、代码块、package、import、封装、访问修饰符 【0基础学java】教学日志:javaSE-面向对象3本章概述一、this关键字二、static关键字三、代码块四、package五、import六、封装七、面向对象的三大特征八、使用访问控制符,实现封装(下次课讲)九、总结(下次课讲)十、作业(下次课讲)1、上机练习1——设计Dog和Penguin类2、上机练习2——打印Dog信息2-13、上机练习3——Dog类的带参构造方法4、上机练习4——操作企鹅性别属性 本章概述 本章属于面向对象第二章的内容,主要讲解this关键字、static关键字、代码块、p 阅读详情

this指针

/*
* this指针
* this:表示当前对象的指针
* – This代表当前对象自身的引用(必须new)
* – This可以修饰属性,区别成员变量和局部变量 
* – This修饰方法 
* – This修饰构造方法(必须是第一条语句)
* 
 * 用处:
 *       1、构造方法,当构造方法中的参数名称跟类的成员变量名称一样的时候,可以使用this代表当前对象
 *             注意:有了this之后,可以将构造方法的参数跟成员变量保持一致
 *             当构造方法中需要调用其他的构造方法时,可以使用this(name)调用其他构造方法,但是必须位于方法体的第一行
 *       2、普通方法中:
 *           当多个普通方法之间需要调用的时候,可以使用this来进行调用,指的是当前对象的其他方法
 *       3、成员变量的使用:
 *           当方法中的参数名称跟成员变量保持一致的时候,使用 this.变量名称 表示的是对象的值,而使用变量名称表示形参列表中的值
* */

public class ThisDemo {

    String name;
    int age;

/*    //用处一
    public ThisDemo(String name,int age){
        this.name = name;
        this.age = age;
    }*/

    //用处二
    public void test1(){
        System.out.println("test1");
    }
    public void test2(){
        System.out.println("test2");
        this.test1();  //这里有无this均可
    }

    //用处三
    public void test3(String name){
        System.out.println(name);
        System.out.println(this.name);
    }

    //用处四(需将用处一注释):构造方法调用其他的构造方法
    public ThisDemo(String name){
        this.name = name;
    }
    public ThisDemo(String name,int age){
        this(name);     //就是这个地方调用其他的构造方法,并且这个this要放在第一行
        this.age = age;
    }

    public static void main(String[] args){
        ThisDemo td = new ThisDemo("hy",18);
        System.out.println(td.name+"\t"+td.age);
        System.out.println();

        td.test2();
        System.out.println();

        td.test3("Petrel");
    }
}

Static关键字

/* * static关键字
 *
 * 一般工具类中的方法定义为static,比如时间
 * – static变量:只有一份,属于类,可以类名. Static变量
 * – static方法: 类名. Static方法,不能出现this和super
 * – static代码块:只执行一次,最早执行的(类第一次调用)
 *
* static:
*       修饰成员变量的时候,表示静态成员变量或者叫类变量
*           普通变量在使用的时候,必须要通过对象名进行调用
*           类变量或者静态变量可以使用对象名调用也可以使用类名进行调用
*       修饰方法的时候,表示静态方法或者叫类方法
*           普通方法在使用的时候,必须要通过对象名进行调用
*           类方法或者静态方法可以使用类名,也可以使用对象名
*       注意:
*           1、静态变量,在创建对象之前被初始化,或者说在类被载入之前进行初始化
*           2、静态变量被所有的对象共享,属于公共变量,对象和类都可以直接调用,但是推荐使用类来调用
*           3、成员变量放在堆中,而静态变量放在方法去中静态区
*           4、静态变量不能定义在静态方法中
*           5、静态方法可以在非静态方法中进行调用
*           6、静态方法中不能直接调用非静态方法
*           7、静态方法中不允许出现this调用
*           8、一般工具类中的方法定义为static
 * 
 * 成员变量在堆中,static定义的类变量存放在方法区中的静态取。
 *
 * 类变量为该类的公用变量,属于类,被该类的所有实例共享。通过下面代码中的修改数据后所打印的结果可以看出
 *
 * 类变量被载入时被显示初始化,在创建对象之前被初始化
 * public class StaticDemo {
    String name = "hy";
    static int age = 10;

    public static void main(String[] args) {
           System.out.println(name);
        System.out.println(age);
        }
     }
 *  通过以上代码可得知输出name会报错,但输出age不会
 *
 * 静态变量不能定义在方法中,只能定义在方法外、类中
 *     public void test(){
        static int a = 10;
    }
 * 这样会报错
 *
 *1.定义方法可以用类名调用,也可以用方法名调用
 * 2.静态方法可以在非静态方法中进行调用。但是静态方法不可以直接调用非静态方法,只可以new一个:new StaticDemo.test2();
 * public class StaticDemo {
    String name = "hy";
    static int age = 10;

    public static void test(){
        System.out.println("可以被调用");
    }

    public void test2(){
        test();
    }

    public static void main(String[] args) {
        StaticDemo td = new StaticDemo();
        td.test(); //通过类名调用
        StaticDemo.test(); //通过方法名调用
        td.test2();
    }
 *
 * 在static方法中不可以访问非static的成员
 * 静态方法不能以任何方式引用this和super关键字,因为类变量在创建对象前就有了,而this表示当前对象的指针
 */

public class StaticDemo {
    String name = "hy";
    static int age = 10;

    public static void main(String[] args) {

        StaticDemo staticDemo = new StaticDemo();

        //使用对象进行调用
        System.out.println(staticDemo.name);
        System.out.println(staticDemo.age);

        //修改数据的时候,修改的是同一空间中的值
        staticDemo.age = 20;
        System.out.println(staticDemo.age);
        System.out.println(StaticDemo.age);

        StaticDemo.age = 30;
        System.out.println(staticDemo.age);
        System.out.println(StaticDemo.age);

        StaticDemo staticDemo1 = new StaticDemo();
        System.out.println(staticDemo.age);

        //使用类名调用
        //System.out.println(StaticDemo.name); 这里会报错,name归属于当前对象
        System.out.println(StaticDemo.age);//age加了static属于静态属性,归属于整个类对象

    }
}

代码块

/**代码块
* 使用{ }括起来的一段代码叫做代码块
 *
 * 分类:
 * *   普通代码块:定义在方法中,使用{}括起来的代码叫做普通代码块
 * *   构造代码块:定义在类中的使用{}括起来的代码叫做构造代码块
 * *           注意:每次代码运行的时候回将构造代码块中的代码添加到构造方法的前面
 * *                   构造代码块中的代码会添加到每一个构造方法中,当使用this(参数)的时候不会添加
 * *   静态代码块:使用static{}括起来的代码叫做静态代码块,在程序载入的时候优先执行
 * *           数据库连接等其他提前需要准备好的代码会放在static代码块
 * *   同步代码块:
 * *           在多线程的时候回使用,用来给共享空间进行加锁操作(后面讲)
 *
 * *   执行顺序:静态代码块--》构造代码块(创建对象的时候才会用到)--》普通代码块
 *
* */

/*
//普通代码块:按照顺序执行
public class CodeBlockDemo {

    public void test(){
        System.out.println("test");
        {
            System.out.println("我应该是什么分类");
        }
    }

    public static void main(String[] args) {
        CodeBlockDemo codeBlockDemo = new CodeBlockDemo();
        codeBlockDemo.test();
        {
            System.out.println("main");
        }
    }

}*/

/*
//构造代码块1
//每次代码运行的时候回将构造代码块中的代码添加到构造方法的前面
public class CodeBlockDemo {

    {
        System.out.println("构造代码块");
    }
/*根据反编译工具得:
    public CodeBlockDemo(){
        {
        System.out.println("构造代码块");
        }
    }
//默认会把System.out.println("构造代码块");这句话加到构造方法中,这样就成了一个构造代码块
 */

/*
    //此处代码作用:验证每次代码运行的时候回将构造代码块中的代码添加到构造方法的前面,会先运行出构造代码块
    public CodeBlockDemo(){
        System.out.println("构造方法");
    }


    public void test(){
        System.out.println("test");
        {
            System.out.println("我应该是什么分类");
        }
    }

    public static void main(String[] args) {
        CodeBlockDemo codeBlockDemo = new CodeBlockDemo();
        codeBlockDemo.test();
        {
            System.out.println("main");
        }
    }

}*/
/*
//构造代码块2
//构造代码块中的代码会添加到每一个构造方法中,当使用this(参数)的时候不会添加
public class CodeBlockDemo {

    int a ;
    int b ;

    public CodeBlockDemo(int a){
        this.a = a;
    }

    public CodeBlockDemo(int a,int b){
        this(a);//这样写的话System.out.println("构造代码块");只会加到public CodeBlockDemo(int a)和public CodeBlockDemo()中
        this.a = a;//这样写System.out.println("构造代码块"); 会加到public CodeBlockDemo(int a)和public CodeBlockDemo()还有public CodeBlockDemo(int a,int b){中
        this.b = b;
    }

    public CodeBlockDemo(){
        System.out.println("构造方法");
    }

    {
        System.out.println("构造代码块");
    }

    public static void main(String[] args) {
        CodeBlockDemo codeBlockDemo = new CodeBlockDemo();
    }
}*/

//静态代码块
    //先执行static{}中的先执行,用于数据库连接等其他提前需要准备好的代码
public class CodeBlockDemo {

    static{
        System.out.println("静态代码块");
    }

    public static void main(String[] args) {
        CodeBlockDemo codeBlockDemo = new CodeBlockDemo();
    }
}

    /*
    int a ;
    int b;

    static{
        System.out.println("静态代码块");
    }

    public CodeBlockDemo(){
        System.out.println("无参");
        System.out.println("构造方法");
    }

    public CodeBlockDemo(int a){
        this.a = a;
    }

    public CodeBlockDemo(int a,int b){
        this(a);
        this.b = b;
    }
    {
        System.out.println("构造代码块");
    }

    public void test(){
        System.out.println("test");
        {
            System.out.println("我应该是什么分类");
        }
    }

    public static void main(String[] args) {
        CodeBlockDemo codeBlockDemo = new CodeBlockDemo(1,2);
        codeBlockDemo.test();
        {
            System.out.println("main");
        }
    }
}*/

Package

/*
 * package:包,对应到文件系统就是多级目录
 *   为了解决两个问题:
 *       1、文件同名问题
 *       2、为了方便管理类,将具体处理功能的代码放到同一个目录下
 *   使用:
 *       一般定义package会放置在java文件的第一行
 *           package 域名的倒写
 *           package com.mashibing.
 *   完全限定名: 包名+类名
 *
 *   JDK中常用的包:
 *       lang:不需要手动导入,自动加载
 *       util:工具包
 *       net:网络包
 *       io:输入输出流包
 *
 * */

public class PackageDemo {
    public static void main(String[] args) {
        java.util.Date date = new java.util.Date();
    }
}

Import

package com.petrel;
import java.util.Date;
import static java.lang.Math.*;

    /*
     * import:
     *   当需要引入非lang包的其他java类的时候,需要使用import工具
     *       如果不使用import,每次在使用某个类的时候必须要将类的完全限定名都加上才可以使用,太过于繁琐
     *
     *   用法:
     *       import java.包名.类名;导入具体的类  推荐使用!
     *       import 包名.*;    将当前包下的所有类文件都进行导入 都导入的话,怕出现超多类文件的情况
     *   注意:
     *       当一个java文件中需要使用多个同名的类的时候,只能选择导入一个,另一个使用完全限定名的方式进行导入
     *
     *   静态导包:
     *       当需要使用某个类的多个方法的时候,同时又不想频繁写该类的名称,此时可以使用静态导包
     * */

    public class ImportDemo {

        //自己定义了一个sqrt方法
        //会优先使用当前类
        //    public void sqrt(){
//        System.out.println("sqrt");
//    }
        public static void main(String[] args) {
            //没导包可以这样写
            java.util.Date date = new java.util.Date();
            //导包了这样写
            Date date1 = new Date();

            System.out.println(Math.sqrt(2));
            System.out.println(Math.abs(-2));
            //静态导包实例 import static java.lang.Math.*;
            System.out.println(sqrt(2));
            System.out.println(abs(-2));
        }
}

面向对象的三大特征

继承 inheritance
–子类 父类
–子类可以从父类继承属性和方法
–子类可以提供自己单独的属性和方法

封装/隐藏encapsulation
–对外隐藏某些属性和方法
–对外公开某些属性和方法
在这里插入图片描述

class Dog {
    private String name = "旺财"; // 昵称
    private int health = 100; // 健康值
    private int love = 0;   // 亲密度
    private String strain = "拉布拉多犬"; // 品种
    public int getHealth() {
        return health;
    }
    public void setHealth (int health) {
        if (health > 100 || health < 0) {
            this.health = 40;
            System.out.println("健康值应该在0和100之间,默认值是40");
    } else
        this.health  =  health;
    }
    // 其它getter/setter方法
}
/*
 *封装:
 * (狭义)将类中的属性设置为私有属性,提供共有的外部方法供程序进行调用,可以实现丰富的细节操作
 * (广义)可以将完成特定功能的代码块封装成一个方法,供不同的程序进行调用
 * 目的:为了保证数据安全和规范
 *
 * 隐藏内部的复杂性,对外公开简单的接口
 *
 * *   定义类的时候需要包含以下组件:
 *       私有属性
 *       构造方法(无参构造方法和自定义构造方法)
 *       set/get方法
 *       普通方法
 *
 * 高内聚,低耦合
 * 同一个事情聚合到一起,事情相互独立的每个程序之间不掺和在一起
 */
package com.petrel;

public class Dog {

    private String name;
    private int age;
    private String color;

    public Dog() {

    }

    public Dog(String name, int age, String color) {
        this.name = name;
        this.age = age;
        this.color = color;
    }

    public void setAge(int age) {
        if (age > 0) {
            this.age = age;
        } else {
            System.out.println("输入年龄不规范,重新输入");
        }
    }

    //不写这里 外部不能调用私有属性
    public int getAge(){
        return this.age;
    }

    public void setName(String name){
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public String getColor() {
        return color;
    }

    public void eat() {
        System.out.println("吃骨头");
    }

    public void paly() {
        System.out.println("玩");
    }

    public void show() {
        System.out.println("名字:" + name);
        System.out.println("年龄:" + age + "岁");
        System.out.println("颜色:" + color);
    }
}
------------
package com.petrel;

/*
 * 封装:
 *       概念:
 *           将类的某些信息隐藏在类内部,不允许外部程序直接访问,
 *           而是通过该类提供的方法来实现对隐藏信息的操作和访问
 *       封装解决什么问题:
 *          如果任何一个处理类都可以直接对Dog进行赋值操作,那么当值不准确的时候,可以回产生额外的结果,
 *           如何在赋值的同时添加一些逻辑判断呢?
 *               封装可以解决此问题
 *       作用:
 *           使用封装可以保证数据的规范,不符合规范的数据将无法进行操作
 *       好处:
 *           1、隐藏类的内部实现细节
 *           2、只能通过提供的方法进行访问,其他方法无法访问
 *           3、可以根据需求添加复杂的逻辑判断语句
 *           4、方便修改实现
 *       面向对象的封装(狭义)可以用一句话概述: 为了保证数据安全和规范
 *           将类中的属性设置为私有属性,提供共有的外部方法供程序进行调用,可以实现丰富的细节操作
 *       广义的封装:
 *           可以将完成特定功能的代码块封装成一个方法,供不同的程序进行调用
 * */

public class DogTest {
    public static void main(String[] args) {
        Dog dog = new Dog();
        dog.setName("皮皮");
        dog.setAge(20);
        dog.setColor("白色");
        dog.show();

    }
}

多态 polymorphism
–为了适应需求的多种变化,使代码变得更加通用!
面向过程只有封装性(功能的封装,而没有数据的封装),没有继承和多态

访问控制符

在这里插入图片描述

package com.petrel;

public class AccessControlDemo {

    //protected 当前包下和子类下可以访问
    protected String str = "test";

    //类的访问修饰符只有两个 public 和default
    public String getStr() {
        return str;
    }
    class Test{

    }

    //构造方法可以有protected 和 private
    public AccessControlDemo(){

    }
    private AccessControlDemo(int a){

    }
    protected AccessControlDemo(String b){

    }
}
------------
package com.petrel;

public class Test {
    public static void main(String[] args) {
        AccessControlDemo a = new AccessControlDemo();
        System.out.println(a.str);
    }
}

Java基础篇三(封装,Java包结构,继承,多态,抽象类和接口,常用类,异常) 安全性:保护数据不被随意修改灵活性:内部实现可以自由改变而不影响外部可维护性:代码更清晰,便于维护复用性:封装好的类可以在多处使用测试性:便于单元测试和调试。 阅读详情

相关推荐

STM32_WS2811驱动

STM32的WS2811驱动

健身房 2842

Java编程入门笔记(六)

得之我幸,失之我命——抽象和封装 构造方法 构造的格式 访问修饰符 构造方法名 ( ) { //初始化代码 } 注意: 构造函数无返回值类型 构造方法名与类名相同 ()里可以指定参数 方法重载 方法名相同 参数项不相同 与返回值、访问修饰符无关 例子 public Penguin () { name = &quot;qq&quot;; love = 20; ...

圣三一 3211

LiteOS | 基于LiteOS的智慧农业案例实验分享

分享一个基于小熊派+LiteOS+华为云的案例实验(智慧农业)。 实验框图 相关模块简介 1、STM32L431RCT6 2、LiteOS LiteOS是华为开发的轻量级实时操作系统: LiteOS源码GitHub仓库链接: https://github.com/LiteOS/LiteOS 其源码一级目录结构如下: 其内核包括任务管理、内存管理、时间管理、通信机制、中断管理、队列管...

嵌入式大杂烩 5991

每日作业2

每日作业

llll_s的博客 193

强化学习-马尔可夫模型

前文提到了强化学习源自马尔可夫决策过程,本文从马尔可夫概念入手,讲解和马尔可夫有关的模型和概念。在马尔科夫决策过程中,我们有一个智能体,它在一个马尔科夫过程中进行决策,每次决策都会导致状态的转移和获得即时奖励。智能体的目标是通过选择动作来最大化未来奖励的期望值。通常马尔科夫决策过程是个五元组:SAPRγSAPRγS 表示状态集合,代表智能体可能处于的所有状态。A 表示动作集合,代表智能体可以采取的所有动作。

君子之学必日新,日新者日进也。不日新者必日退,未有不进而不退者 8062

使用TBtools进行物种间共线性分析

Sequence Toolkit ---Fasta Tools ----ID Prefix (fasta文件)

sunny_dayone的博客 8753

java基本数据类型与封装类 示例_Java零基础系列教程10Java抽象与封装

配套视频教程软件出现的目的用计算机的语言描述现实世界用计算机解决现实世界的问题为什么使用面向对象世界由对象组成面向对象的思想 描述 面向对象的世界 符合人类思维习惯从现实中抽象出类分三步:找出它的种类找出它的属性找出它的行为用面向对象描述世界第一步:发现类class Dog {}根据“对象”抽象出“类”第二步:发现类的属性狗类共有的特征:品种年龄昵称健康情况跟主人的亲密度… …class Dog ...

weixin_39796238的博客 207

LVGL 离线字体转换lv_font_conv本地安装

LVGL FONT CONV 离线版本

liu132641的专栏 3387

面向对象网课第二节------封装

面向对象封装

yigechi的博客 275

HRNet 【demo 复现过程】

Deep High-Resolution Representation Learning for Human Pose Estimation

qq_45257495的博客 5558

射频微波电路设计【1.4】

AppCAD是一组射频设计工具和计算机应用说明,它使射频工程师能以更快和更容易的方式设计他们的产品。该软件的理 念是为工程师提供一个“个人设计助理”,即功能强大、快速和容易使用的辅助设计工具。该软件包括如下基本功能: ·各种传输线电气参数的分析与计算;·各种匹配电路的分析与计算;·各种有源和无源简单电路的分析与计算;·射频系统指标的计算:增益、噪声系数、三阶交调、信噪比、灵敏度等;·器件可靠性分析。

qq_43416206的博客 2323

Java面向对象2

一、this关键字 1.this的作用: ·this表示的是当前对象本身, ·更准确地说,this代表当前对象的一个引用。 2.普通方法中使用this ·区分类成员属性和方法的形参 ·调用当前对象的其他方法(可以省略) ·位置:任意 3.构造方法中使用this ·使用this来调用其它构造方法 ·位置:必须是第一条语句 4.this不能用于static方法。(讲完static,大家就知道为什么了!) 5.this测试代码 ublic class TestThis { int a,b,c; Tes..

weixin_64094228的博客 423

数学建模学习(121):Python实现模糊AHP(Fuzzy AHP)——从原理到实践

Python实现模糊AHP(Fuzzy AHP)

全栈川川 1542

Java面向对象编程3

一、this关键字 this的作用: this表示的是当前对象本身, 更准确地说,this代表当前对象的一个引用。 普通方法中使用this 区分类成员属性和方法的形参 调用当前对象的其他方法(可以省略) 位置:任意 构造方法中使用this 使用this来调用其它构造方法 位置:必须是第一条语句 this不能用于static方法。 this测试代码 二、static关键字 在类中,用static声明的成员变量为静态成员变量 ,或者叫做: 类属性,类变量. 它为该类的公用变量,属于类,被该类的所有实例共享,在类

hu_blank的博客 112

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【后端】Java学习笔记

java笔记二周目

lcukyNwa的博客 1568

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

18.8.13 下午 第16天上课

。   总结  · 高级语言可分为:面向过程和面向对象两大类       1. 面向过程与面向对象都是解决问题的思维方式,都是代码组织的方式。       2. 解决简单问题可以使用面向过程。       3. 解决复杂问题:宏观上使用面向对象把握,微观处理上仍然是面向过程。 · 对象和类的关系是特殊到一般,具体到抽象的关系。 · 栈内存       1. 每个线程私有,...

Trinety 124

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

AI编程工具选型:成本结构决定技术寿命

AI编程辅助不是简单的代码生成工具,而是嵌入开发流水线的可计量计算单元。其核心价值在于将自然语言理解、代码语义解析与工程约束(如安全合规、低延迟、资源受限)统一建模。关键技术原理涉及上下文结构化(如AST驱动注入)、token利用率优化、多文件语义关联及输出格式约束(如JSON Schema)。这些能力直接决定单次补全的token成本、P95延迟与运维可控性。在Java微服务、金融合规、CI/CD等真实场景中,Claude 3.5 Sonnet与Codex的差异本质是算力结构适配度之别,而非模型‘聪明程度’

395

dog的信息

public class Dog { private String name="旺财"; private int health=100; private int love=0; private String strain="拉布拉多犬"; public String getName(){ return name; } public void setName(String name){ this.name=name; ...

Wz20030110的博客 246

java字符串练习2

一: package cn.tx.demo; public class person { private String idcard; private String name; private int age; private int gender;//1:男;2:女 public person(){ } //创建构造器 public person(String idcard, String ...

weixin_45339692的博客 299

【Java--面向对象常用知识

JAVA-面想对象2this关键字static关键字 this关键字 this关键字概述:表示当前对象指针,指向当前对象,表示当前对象的引用。 this关键字的用途: 普通方法: 区分类成员属性和方法的形参. – 调用当前对象的其他方法(可以省略) 位置:任意 构造方法: 使用this来调用其他方法 位置:必须是第一条语句 This的测试代码 package oop2; /** * @Auther:Yuhai * @Date:2022/3/19-03-19-18:

weixin_62922379的博客 1120

抽象与封装

1.什么是类,什么是对象? 2.如何创建对象? 3.如何在程序中接收控制台的输入? 4.如何从现实世界中抽象出类? 5.构造方法的作用和特点是什么? 6.什么是方法重载? 领养宠物并打印宠物信息 Dog: package Animal; public class Dog { private String name = "旺财"; p...

weixin_30316097的博客 188

java 指针定义_JAVA与指针

首先,提个问题:JAVA中没有指针,JAVA中有指针,哪个一个对呢?答:都对,JAVA中没有指针,因为我们不能对指针直接操作,像C++那样用->来访问变量。JAVA有指针,因为JDK中封装了指针。(现在我们就来找到这个指针)我的理解:在声明一个对象的时候,其实就是定义了一个指针变量。注意:1、指针变量有两层含义1) 指针变量里存的是地址(它指向的变量的首地址)。2) 指针变量有类型,类型说明...

weixin_32427471的博客 1万+

Java中的指针

Java中是否有指针? 简短的答案是“不,没有”,这对于许多开发人员来说似乎是显而易见的。 但是,为什么对其他人却不那么明显呢? http://stackoverflow.com/questions/1750106/how-can-i-use-pointers-in-java http://stackoverflow.com/questions/2629357/does-java-...

最佳 Java 编程 1640

eleven day("import","package","权限修饰符","static关键字","final")

import 用于将其他包下的类导入到当前java类中 使用方式: 必须放在类的上面 使用不同包下的类或除了java.long包以外的类时需要导包 package 用来存放类的文件夹,目的是为了方便区分类 注意事项: 必须放在文件中有效代码的第一行 当同一个类中使用不同包下同名的类时,必须使用带包方式创建对象 格式: 包名.类名 对象名=new 包名.类名(实参) 权限修饰符 用于控制代码...

weixin_44013965的博客 172

JVM从入门到精通(二):详解Class加载过程,双亲委派机制,编译执行与解释执行

复习:Class文件结构 Class Loading Linking Initializing:编译 加载 初始化 这节课,我们讲 class 是怎么从硬盘中加载到内存中,并且准备执行的。 package com.mashibing.jvm.c2_classloader; public class T004_ParentAndChild { public static void main(String[] args) { System.out.println(T004_Par

寒泉 6万+

疯狂Kotlin讲义学习笔记07章:面向对象(上)对象,中缀,解构,幕后字段、属性,延迟初始化,访问控制符,构造器,继承,重写,super限定,重写,多态,is类型检查,as强制类型转换

1、定义类的标准格式 修饰符 class 类名 [ constructor 主构造器]{ 零到多个次构造器定义 零到多个属性.... 零到多个方法.... } 修饰符open是final的反义词,用于修饰一个类,方法或属性,表明类可派生子类、方法或属性可被重写 定义主构造器 如果主构造器没有任何注解及修饰符,则可以省略constructor关键字如: class User(firstname:String){ } 可以定义0-1个主构造器,0-n个次构造器 如果没有定义主构造器,系统会默

weixin_43745804的博客 315
上一篇: Java-对象和类、内存分析、构造方法、重载、变量
下一篇: Java-继承、super关键字、重写、抽象、final用法、对象的比较、Object类
Petrel_
博客等级 码龄8年 17粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值