JAVA【类和对象】学习笔记

目录

1.例:类:

2.类的实例化

3.类和对象的说明

4.this的引用(谁调用了包含this的类,这个this就是谁,表示当前对象的引用)

4.1 this引用的特性

5.构造方法

5.1 构造方法模板

5.2 一个对象的产生至少有以下两步:

5.3 在Java的idea编译器中生成构造方法发快捷方法

5.4 构造方法的特性

5.4.1 调用构造方法 this() ,需注意:

5.4.2 this的三种用法

5.5 默认初始化

5.6 就地初始化

6.封装

 6.1 封装扩展之包

6.2 导入包中的类

6.3 自定义包

6.4 常见的包

6.5 创建多个属性的快捷方法

7.static 成员


  • 大驼峰,指的是定义类的修饰,即单词每一个首字母进行大写区分,例:WashWachine
  • 小驼峰,指的是定义成员方法的修饰,即第二个单词首字母进行大写,第一个单词首字母小写进行区分,例:washClothes
  • 针对Java的idea编译器中,若想找到当前代码的文件位置,直接鼠标右键点击文件名,选择Open in -> Explorer 即可

1.例:类:

class WashMachine{

//字段/属性 成员属性或者成员变量

       public String brand;  //"小天鹅"
       public String type;   //类型
       public double weight;//重量
       public double length;//长
       public double width;//宽
       public double height;//高
       public double color;//颜色
}

    
//成员方法
public void wash Clothes(){//洗衣服
     System.out.println("洗衣功能");
} 

public void wash Clothes(){//脱水
     System.out.println("脱水功能");
}

public void wash Clothes(){//定时
     System.out.println("定时功能");
}

注意:

  1. 一般情况下,建议一个JAVA文件一个类
  2. main方法所在的类一般要使用public修饰
  3. public修饰的类必须要和文件名相同 (若需要修改文件名,鼠标右键文件名,选择RenamFile 便可修改)(若想找文件地址,鼠标右键文件名,选择Open in->Explorer)
  4. 不要轻易尝试修改public修饰的类的名称

2.类的实例化

      用类类型创建对象的过程,称为类的实例化,在JAVA中采用new关键字,配合类名来实例化对象

结论:可以使用new关键字来实例化多个对象

  1. new关键字用于创建一个对象的实例
  2. 使用 . 来访问对象中的属性和方法
  3. 同一个类可以创建多个实例
一:                       

WashMachine washMachine1=new WashMachine();  

WashMachine1.brand="小天鹅";

System.out.println(washMachine1.brand);

// 表示实例化为“小天鹅”
二:

WashMachine washMachine2=new WashMachine();  

WashMachine2.brand="小天鹅";

System.out.println(washMachine2.brand); 

//表示实话为“一个品牌”

 


3.类和对象的说明

  1. 类是一种自定义的类型,可以用来定义变量
  2. 一个类可以实例化出多个对象,实例化出的对象占用实际的物理空间,存储类成员变量

4.this的引用(谁调用了包含this的类,这个this就是谁,表示当前对象的引用)

public class TestDate{
        public int year;
        public int month;
        public int day;

public void setDate(int year,int month,int day){
        this.year=year;
        this.month=month;         //this表示当前对象的引用
        this.day=day;
}

public void printDate(){
        System.out.println(“年+"this.year+"月+"this.month+"日+”this.day);
}

public static void main(String[] args){
        TestDate testDate1 = new TestDate();
        TestDate testDate2 = new TestDate();
        TestDate testDate3 = new TestDate();

        testDate1.setDate(1998,1,9);
        testDate2.setDate(1999,4,9);
        testDate3.setDate(2000,9,9);

        testDate1.printDate();
        testDate2.printDate();
        testDate3.printDate();
}
} 


4.1 this引用的特性

  1. this的类型:对应类型引用
  2. this只能在“成员方法”中使用
  3. 在“成员方法”中,this只能引用当前对象,不能再引用其他对象
  4. this是“成员方法”第一个隐藏的参数,编译器会自动传递,在成员方法执行时,编译器会负责将调用成员方法对象的引用传递给该成员方法,this负责来接受。

5.构造方法

5.1 构造方法模板

        方法名(参数列表){

                方法名;

        } //没有返回值的方法,并且方法名必须和类名保持一致


5.2 一个对象的产生至少有以下两步:

  1. 为对象分配内存
  2. 调用合适的构造方法

5.3 在Java的idea编译器中生成构造方法发快捷方法

右击鼠标右键,选择Generate -> 选择Constructor -> 按住shift键,将自己创建的变量都勾选上,便可自动生成构造方法


 

 


5.4 构造方法的特性

  1. 名字必须与类名相同
  2. 没有返回值类型,设置void也不行
  3. 上述Date(构造方法)类中,没有定义任何构造方法,编译器会默认生成一个不带参数的构造方法

        注:一旦用户定义,编译器则不再生成

     4.构造方法中,可以通过this调用其他构造方法来简化代码

5.4.1 调用构造方法 this() ,需注意:

  • 这个写法只能在构造方法当中才能这样写
  • 构造方法中不能调用自己
  • 只能放在构造方法的第一行
  • 不能形成环

5.4.2 this的三种用法

  • this.属性
  • this()
  • this.方法

5.5 默认初始化

  1. 成员变量在没有初始化的时候,都有一个默认值,引用类型的值都是null

 


5.6 就地初始化

例:

public String name;----->public String name="悟空";

public int age;----->public int age=10000;


6.封装

        在Java当中,语法层次上说,使用private可以隐藏实现细节 

访问修饰限定符:

default的使用就是什么都不写

public:可以理解为一个外貌特征,谁都可以看得到

default:对于自己家族中(同一个包)不是什么秘密,对于其他人来说是隐私

private:只有自己知道,其他人不知道

【说明】:

  • protected主要用在继承中
  • default权限指:什么都不写时的默认权限
  • 访问权限除了限定类中成员的可见性,也可以控制类的可见性

 6.1 封装扩展之包

        包其实是Java当中组织类的一种方式

6.2 导入包中的类

        Java中已经提供了很多现成的类供我们使用,

例如Date类:可以使用 Java.until.Date导入Java.until这个包中的Date类

                即: Java.until.Date date=new java.until Date();

 进行优化,可以使用 import语句导入包

        import java.until.Date;

        Date date=new date();


若含有两个及以上的类,可以使用速配符:

        即 import java.until.*;(非必要不使用)

        它不是导入until下的所有类,作用是用到哪个类,它帮助你导哪个类


可以使用 import static 导入包中静态的方法和字段

        import static java.until,lang.Math.*;

        //double result=Math.sqrt(Math.pow(x,2)+Math.pow(y,2)); 

        表示x的平方加y的平方的和再开方

        double result=sqrt(pow(x,2)+pow(y,2));


6.3 自定义包

输入:右键左边的src -->new --> package -->输入包名(一般都是网址)

        例:com.bit.www  或者  com.bit

创建好之后,会生成bit的包,在bit中创建新的项目,首行需声明当前Java文件,在哪个包中

        例:package com;

例:import com.bit.TestBit;

       TestBit testBit =new TestBit():

 


 

 

 

6.4 常见的包

  1. java.lang:系统常用基础类(String、Object),此包从JDK1.1后自动导入

  2. java.lang.reflect:Java反射编程包

  3. java.net:进行网络编程开发包

  4. java.sql:进行数据库开发的支持包

  5.  java.until:是Java提供的工具程序包。(集合类等)非常重要

  6. java.io:I/O编程开发包

6.5 创建多个属性的快捷方法

类中含有多个属性:

        鼠标右键Generate -->选择Generate and Setter -->按住shift选中所有,编译器会自动帮助生成,不管有多少属性


7.static 成员

    private String name;  //普通成员变量

    privat int age;

    //表示所有对象都有一份

   private static String classRoom; //教室【就只有一份】,类变量,静态成员变量

   //表示所有对象共用一份

   System.out.println("教室是“+Student.classRoom);

普通成员变量:在类的内部,构造方法的外部

静态成员变量:在类的外部,构造方法的外部,被static修饰了

局部变量:方法内部定义的变量 

类的静态成员变量通过类名访问,也就是说,这个静态成员变量不属于对象

   静态成员的访问方式:不建议通过对象的引用访问,建议通过类名.的方式进行访问

      1.引用不可以指向引用

 Student student1=new Student("zhangsan",18);

 Student student2=student1;

引用只能指向对象:上述代码的意思是,student2这个引用,指向student1这个引用所指向的对象

      2.一个引用不能指向多个对象

      3. Person P=null; 代表不指向的对象

静态方法的内部是不能调用非静态的方法的

        原因是因为静态方法不依赖对象,但是非静态方法依赖对象

例:

class student{
public void print(){
    System.out.println("姓名:"+this.name+"年龄:"+this.age):
}
public static void funcStatic(){
    //print();编译错误,这是非静态的方法
    System.out.println("funcStatic().....")
}
}
public static void main(String[] args){
    student.funcStatic();
}

 静态方法是属于整个类的,而非静态方法只能通过对象调用

【静态方法特征】(静态是最先被执行的):

  1. 不属于某个具体的对象,是类方法
  2. 可以通过对象调用,也可以通过类名.静态方法名(...)方式调用,更推荐使用后者
  3. 不能在静态方法中访问任何非静态方法,因为非静态方法有this参数,在静态方法中调用的时候无法传递this引用

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值