Java学习笔记6--类与对象

6.1 面向对象概述

面向对象的3个核心特性是封装性,继承性,多态性。

6.2 类结构

6.2.1 类的定义

声明类的语法格式如下:

[public ][abstract |final ] class <class_name> [extends <class_name> ]
[implements <interface_name> ] {
            //定义属性部分
    .....
        //定义方法部分
    .....
}
//[ ]中的内容可省略

各参数含义如下:

public        表示“共有"的意思,若类被public修饰,则可被其他类和程序访问;

abstract    被其修饰的类为抽象类,不能被实例化。抽象类中可有抽象方法(须被abstract修饰)和具体方法(没被abstract修饰).继承抽象类的所有子类须实现抽象类中的所有抽象方法。

final          被其修饰的类不允许被继承。

class        声明类的关键字。

class_name     类的名称。

extends     表示继承其他类。

implements  表示实现某些接口。

6.2.2 成员变量的定义

声明成员变量的语法如下:

[public |protected | private ] [static ] [final] <type > <variable_name>

 

各参数的含义:

public |protected | private  表示成员变量的访问权限。类成员修饰符的访问控制权限如下图:

 

static    表示该成员变量为类变量,也称为静态变量。

final     常量

type    变量类型

variable_name  变量名称 

6.2.3  成员方法定义

[public | protected | private ] [static ] [ final | abstract ] [native]
[synchronized ]
<void | return_type> <method_name> ( [paramList]) [throws <exceptionList>]
{
    .....
}

各参数说明:

public | protected | private   访问权限

static   表示限定该成员方法为静态方法。

final   不允许被重写或重载。

abstract   表示限定方法为抽象方法。

native     表示方法为本地方法,和抽象方法类似,只有方法声明,没有方法实现,但它把具体实现移交给本地系统的函数库,而没有通过Java虚拟机,可以说是Java与其他语言通信的一种机制。

synchronized  表示为同步方法,用来控制多个并发线程对共享数据的访问。

return_type    表示方法的返回值类型。

method_name 方法名称。

paramList      参数列表。

throws exceptionList   表示抛出异常。

6.2.4  构造方法

注意点:1.构造方法的默认返回类型是对象类型本身,并且构造方法不能被static,final,synchronized,abstract,native修饰。

6.2.5 main( )方法

main( )方法是Java程序执行的入口。作为Application执行的Java程序,有且只能有一个类具有main方法。main方法定义的语法如下:

public static void main ( String[] args)
{
    .....
}

 注意点:

1.访问控制权限是公有的。

2.主方法是静态的。若在主方法中调用本类的其他方法,则该方法也必须是静态的,否则须创建本类的实例对象,再通过对象调用成员方法。示例如下:

public class Test {
    public void AAA() {
        System.out.println("AAA");
    }
    public static void BBB() {
        System.out.println("BBB");
    }

    public static void main ( String[] args)
    {
        // AAA(); //err
        BBB(); //true
        Test t =new Test();
        t.AAA();
    }

3.主方法没有返回值,只能用void.

4.main( )方法具有一个字符串数组参数,用来执行Java程序中的命令行参数。

 

java Test param1 param2

5.除形参变量名可变外,其余不可改变。 

6.2.6 方法的可变参数

语法格式:

methodName ( {paramList},paramType... paramName)

其中,methodName表示方法名称;paramList表示方法的固定参数列表;paramType表示可变参数类型;...是声明可变参数的标识;paramName表示可变参数名称。

注:可变参数必须定义在参数列表的最后。

6.3 对象

6.3.1 对象的创建

1.显示创建对象

(1)使用new 关键字创建对象

(2)调用java.lang.Class 或者java.lang.reflect.Constuctor类的newInstance( )实例方法

(3)调用对象的clone( )方法

(4)调用java.io.ObjectInputStream对象的readObject( )方法(随后详解)

package com.mxl.object;
public class Student implements Cloneable {
    private String strName;
    private int intAge;
    public  Student( ){
        }
    public  Student(String name,int age ){
        strName = name;
        intAge = age;
        }
     public static void main(String[ ] args) throws Exception {
        //使用new创建
       Student student1 =new Student("马祥麟",22);
        
        //调用java.lang.Class的newInstance( )方法创建对象
        Class c1 = Class.forName("com.mxl.object.Student");
        Student student2= (Student) c1.newInstance( );
        
        //调用对象的clone( )方法创建对象
        Student  student3 =(Student) student1.clone();

   }
}

说明:

1.使用new或class对象创建对象时,都会调用类的构造方法;后者会调用默认构造方法。

2.使用Object类创建对象时,不会调用类的构造方法,而是复制一个对象。

3.若类没有实现Cloneable接口,则clone( )会抛异常。

2.隐含创建对象

(1)String strName= "str";

(2)字符串中的"+".

(3)当Java虚拟机加载一个类时,会隐含地创建描述这个类的class实例。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

北冥有鱼zsp

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

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

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

打赏作者

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

抵扣说明:

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

余额充值