JAVA编程中的类和对象

简介: 1:初学JAVA,都知道JAVA是面向对象的编程。笔者这节开始说说类和对象。(实例仅供参考,如若复制粘贴记得修改包名和类名,避免出错) 学习JAVA的快捷键,Alt+/代码补全功能,其实此快捷键启动了Eclipse代码辅助菜单,Shift+Ctrl+o快捷键导入包 Ctrl+F可以快速查找API,中文版API,百度云链接:http://pan.

1:初学JAVA,都知道JAVA是面向对象的编程。笔者这节开始说说类和对象。(实例仅供参考,如若复制粘贴记得修改包名和类名,避免出错)

学习JAVA的快捷键,Alt+/代码补全功能,其实此快捷键启动了Eclipse代码辅助菜单,Shift+Ctrl+o快捷键导入包

Ctrl+F可以快速查找API,中文版API,百度云链接:http://pan.baidu.com/s/1slQWhCL 密码:cfxo

首先

对象的创建:类名  对象名=new 类名();也许大多数学习java的都会写,但是理解方面是这样的,

new一个类名,就会得到一个对象,而这个对象的类型就是这个类名的类型

比如说:Car car=new Car();//就是通过new一个Car类名,得到car这个对象,而这个对象就是Car类型的

2:类必须先定义才能使用。类是创建对象的模板,创建对象也叫类的实例化。

package com.cnblogs;//定义包的格式,关键词package,包的名字最规范的格式是域名的反写,比如com.什么

public class People {//class关键字,定义类的关键字,People是类的名称
    
    public String name;//类的属性
    public String sex;
    public int age;   

 //类的方法 
    public void sleep(){
        System.out.println("人疲倦的时候喜欢睡觉觉");
    }
    
    public void eat(){
        System.out.println("人饥饿的时候喜欢吃饭饭");
    }
    public static void main(String[] args) {//主函数
        People p=new People();//对象的实例化
        p.eat();//调用类的方法
        p.sleep();
    }

}
3:构造方法

构造方法的名称必须与类的名称相同,并且没有返回值。
每个类都有构造方法。如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认的构造方法。

package com.cnblogs;

public class People {
    
    public String name;
    public String sex;
    public int age;
    
    public People(){//默认的构造方法,初始化对象的时候调用默认构造方法
        System.out.println("类默认的构造方法,不含参数");
    }
    public People(String name){//含参的构造方法
        System.out.println("含参的构造方法");
    }
    public void sleep(){
        System.out.println("人疲倦的时候喜欢睡觉觉");
    }
    
    public void eat(){
        System.out.println("人饥饿的时候喜欢吃饭饭");
    }
    public static void main(String[] args) {
        People p=new People();
        p.eat();
        p.sleep();
    }
    
}

4:Java 通过修饰符来控制类、属性和方法的访问权限和其他功能,通常放在语句的最前端。

权限(访问)修饰符关键字包含:public ,private ,protected,另外一个就是默认的;

public:对所有类可见,包含本类,同包其他类或者子类,其他包的类或者子类

protected:对本类可见,对同包其他类或者子类可见,对其他包的类或者子类不可以见

private:只对本类可见,对同包其他类或者子类不可见,对其他包的类或者子类不可以见

默认:则是对同一包内可见

实例如下:

package com.cnblogs;

public class Men {
    
    public String name;//共有属性
    private int age;//私有属性
    protected String sex;//受保护的属性
    int a=10;//默认的
}

5:变量的作用域,包含全部变量和局部变量

举例如下

package com.cnblogs;

public class Men {
    //全部变量,在整个作用域都可以使用
    public String name;//共有属性
    private int age;//私有属性
    protected String sex;//受保护的属性
    int a=10;
    public static void main(String[] args) {
        //定义的i是局部变量,只可以在for循环这个局部内进行使用
        for(int i=0;i<10;i++){
            System.out.println("局部变量,在可以在局部进行使用"+i);
        }
    }
    
}

6:this关键字

this 关键字用来表示当前对象本身,或当前类的一个实例,通过 this 可以调用本对象的所有方法和属性。

成员变量与方法内部的变量重名时,希望在方法内部调用成员变量,怎么办呢?这时候只能使用this。

作为方法名来初始化对象,也就是相当于调用本类的其它构造方法,它必须作为构造方法的第一句。

作为参数传递,需要在某些完全分离的类中调用一个方法,并将当前对象的一个引用作为参数传递时。

举例如下

package com.cnblogs;

public class Dog {
    
    int a=21;
    int b=12;
    
    public Dog(){//this关键字作为方法名来初始化对象
        this(23,43);
    }
    
    public Dog(int a, int b) {
        // TODO Auto-generated constructor stub
        this.a=a;
        this.b=b;
        System.out.println(a+" "+b);
    }

    public void add(){//通过this关键字可以调用类的属性和方法
        int c=this.a+this.b;
        System.out.println(c);
    }
    
    public void setA(int a){//使用this关键字区分同名变量
        this.a=a;
    }
    public int getA(){
        return a;
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Dog d=new Dog();
        d.add();
        
        d.setA(44);
        int dd=d.getA();
        System.out.println(dd);
    }

}
7:JAVA中方法的重载(构造方法也可以重载)

即方法的名字相同,而方法的参数类型,个数,顺序不同即为方法的重载

注意1:声明为final的方法不可以重载,声明为static的方法不能被重载,但是能够被再次声明。

注意2:仅仅是返回值类型不同,不能构成方法的重载

举例如下:

package com.cnblogs;

public class Cat {
    
    public void cat(){
        System.out.println("方法的重载");
    }
    public void cat(int a,int b){
        System.out.println("方法的重载,方法中参数的个数");
    }
    public void cat(String c,int d){
        System.out.println("方法的重载,方法中参数的类型不同");
    }
    public void  cat(int e,String f){
        System.out.println("方法的重载,方法中参数顺序不同");
    }
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
    }

}

8:包装类(Wrapper Classes),拆箱和装箱


基本类型和对应的包装类可以相互装换:

由基本类型向对应的包装类转换称为装箱,例如把double包装成 Double 类的对象;

包装类向对应的基本类型转换称为拆箱,例如把 Integer 类的对象重新简化为 int。

package com.cnblogs;

public class Sun {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int a=32;
        Integer i=new Integer(a);
        System.out.println("手动进行装箱"+i);
        
        int a2=i.intValue();//此方法的作用是以int值返回此Integer对象
        System.out.println("手动进行拆箱"+a2);

   int a4=54;
        Integer i4=a4;//自动装箱
        System.out.println("自动进行装箱"+i4);
    }

}

重点笔记,加强理解多态的含义

多态存在的三个必要条件:

  • 继承
  • 重写
  • 父类引用指向子类对象
目录
相关文章
|
5天前
|
安全 Java 调度
Java编程时多线程操作单核服务器可以不加锁吗?
Java编程时多线程操作单核服务器可以不加锁吗?
18 2
|
9天前
|
设计模式 缓存 Java
死磕-高效的Java编程(一)
死磕-高效的Java编程(一)
|
3天前
|
Java API
Java的日期类都是怎么用的
【10月更文挑战第1天】本文介绍了 Java 中处理日期和时间的三个主要类:`java.util.Date`、`java.util.Calendar` 和 `java.time` 包下的新 API。`Date` 类用于表示精确到毫秒的瞬间,可通过时间戳创建或获取当前日期;`Calendar` 抽象类提供丰富的日期操作方法,如获取年月日及时区转换;`java.time` 包中的 `LocalDate`、`LocalTime`、`LocalDateTime` 和 `ZonedDateTime` 等类则提供了更为现代和灵活的日期时间处理方式,支持时区和复杂的时间计算。
26 14
|
7天前
|
安全 Java 编译器
java访问类字段
java访问类字段
|
9天前
|
算法 安全 Java
JAVA并发编程系列(12)ThreadLocal就是这么简单|建议收藏
很多人都以为TreadLocal很难很深奥,尤其被问到ThreadLocal数据结构、以及如何发生的内存泄漏问题,候选人容易谈虎色变。 日常大家用这个的很少,甚至很多近10年资深研发人员,都没有用过ThreadLocal。本文由浅入深、并且才有通俗易懂方式全面分析ThreadLocal的应用场景、数据结构、内存泄漏问题。降低大家学习啃骨头的心理压力,希望可以帮助大家彻底掌握并应用这个核心技术到工作当中。
|
9天前
|
Java 程序员 编译器
死磕-高效的Java编程(二)
死磕-高效的Java编程(二)
|
4天前
|
Java
JAVA并发编程系列(13)Future、FutureTask异步小王子
本文详细解析了Future及其相关类FutureTask的工作原理与应用场景。首先介绍了Future的基本概念和接口方法,强调其异步计算特性。接着通过FutureTask实现了一个模拟外卖订单处理的示例,展示了如何并发查询外卖信息并汇总结果。最后深入分析了FutureTask的源码,包括其内部状态转换机制及关键方法的实现原理。通过本文,读者可以全面理解Future在并发编程中的作用及其实现细节。
|
7天前
|
Java 数据处理 调度
Java中的多线程编程:从基础到实践
本文深入探讨了Java中多线程编程的基本概念、实现方式及其在实际项目中的应用。首先,我们将了解什么是线程以及为何需要多线程编程。接着,文章将详细介绍如何在Java中创建和管理线程,包括继承Thread类、实现Runnable接口以及使用Executor框架等方法。此外,我们还将讨论线程同步和通信的问题,如互斥锁、信号量、条件变量等。最后,通过具体的示例展示了如何在实际项目中有效地利用多线程提高程序的性能和响应能力。
|
8天前
|
安全 算法 Java
Java中的多线程编程:从基础到高级应用
本文深入探讨了Java中的多线程编程,从最基础的概念入手,逐步引导读者了解并掌握多线程开发的核心技术。无论是初学者还是有一定经验的开发者,都能从中获益。通过实例和代码示例,本文详细讲解了线程的创建与管理、同步与锁机制、线程间通信以及高级并发工具等主题。此外,还讨论了多线程编程中常见的问题及其解决方案,帮助读者编写出高效、安全的多线程应用程序。
|
2月前
|
Java 开发者
奇迹时刻!探索 Java 多线程的奇幻之旅:Thread 类和 Runnable 接口的惊人对决
【8月更文挑战第13天】Java的多线程特性能显著提升程序性能与响应性。本文通过示例代码详细解析了两种核心实现方式:Thread类与Runnable接口。Thread类适用于简单场景,直接定义线程行为;Runnable接口则更适合复杂的项目结构,尤其在需要继承其他类时,能保持代码的清晰与模块化。理解两者差异有助于开发者在实际应用中做出合理选择,构建高效稳定的多线程程序。
47 7
下一篇
无影云桌面