JAVA自学笔记10

1、形式参数与返回值

1)类名作为形式参数(基本类型、引用类型)

作形参必须是类的对象

2)抽象类名作形参

需要该抽象类的子类对象,通过多态实现

3)接口名为形参

需要的是该接口的实现类对象

4)类名作返回值类型

返回的是该类的一个对象

class StudentDemo{
public Student getStudent(){
return new Student()}//匿名对象,返回一个student类型
}
//创建该类的对象并调用该对象的getStudent()方法即可创建Student对象

5)抽象类名作返回值类型

返回的是抽象类的子类对象,该子类不是抽象类

abstract class Person{
public abstract void study();
}
class PersonDemo{
public Person getPerson(){
return Person的子类名(需先定义);
}
}

6)接口作返回值类型

返回的是该接口的实现类对象

2、链式编程

1)每次调用方法完毕后返回的是一个对象

3、包(package)

1)本质是文件夹

2)目的是对类进行分类管理

3)可按模块分也可按功能分

4)格式:package 包名;

多级包用.分开

5)注意事项:package语句必须是程序的第一条可执行的代码

package语句在一个java文件中只能有一句

如果没有package,默认无包名

6)编译与运行

A.手动式:

编写一个带包的Java文件

通过Javac命令编译该java文件

手动创建包名

把第二步骤生成的class文件放到第三步骤的最底层包

回到与包根目录在同一目录的地方,带包名运行

B,自动式:javac编译时带上-d即可,即

javac -d.包名.java

系统将自动创建相关文件夹,运行方式与手动式一样

7)不同包下类之间的访问:(导包)

import (所在包名).包名;//用什么包就导入什么包,这种方式导入是到类的名称

之后需创建关于该类的名称

先后顺序:package*(只能有一个)>import(可以有多个)>class(可以有多个,建议是一个)

4、修饰符

1)

2)class前加public

3)状态修饰符:static/final

4)抽象修饰符 abstract

5)对于类,只能使用默认的或public权限修饰符,不能使用static修饰符,其余的可以,常用public

6)对于成员变量,除abstract外所有修饰符均适用,常用private

7)对于构造方法:不允许适用static/final/abstract,只能使用权限修饰符修饰,常用public

8)对于成员方法:可被所有修饰符修饰,常用public

9)除此之外的组合规则:

成员变量:public static final//d定义静态成员变量

成员方法:public static

public absrtact

public final

5、内部类

1)把类定义在其他类的内部,这个类就被称为内部类

2)内部类可以直接访问外部类的成员,包括外部类私有的

但外部类若要访问内部类的成员,则必须创建对象

3)位置:

成员位置类:在成员位置定义的类被称为成员内部类

在测试类中要直接使用内部类,需经外部类允许:

外部类名.内部类名 对象名=new 外部类构造方法名().内部构造方法名();

Outer.Inner oi=new Outer().new Inner();

局部位置类:在局部位置定义的类,被称为局部内部类

4)成员内部类的常见修饰符:private 为了保证数据的安全性,修饰成员变量

static使数据访问更加方便,修饰内部类,因为内部类可以看作是外部类的成员

__被静态修饰的成员内部只能访问外部类的静态成员

__内部类被静态修饰后的成员方法可以有静态的也可以有非静态

静态内部类访问的外部类数据必须用静态修饰

成员内部类被静态修饰后的访问方式是:

外部类名.内部类名 对象名=new 外部类名.内部类名();

不能再使用new 外部类名().new 内部类名();方式访问

调用静态内部类内某一静态成员方法时也可使用

外部类名.内部类名.方法();

来调用

@例题1:

补齐程序,注意内部类与外部类间不存在继承关系

class Outer{
public int num=10;
class Inner{
public int num=20;
}
public void show(){
int num=30;
System.out.println(___);
System.out.println(___);
System.out.println(___);
}}}

使程序依次输出30、20、10,请完善以上代码

num

this.num

new Outer().num//不是讲台变量,只能通过创建匿名对象来访问

或Outer.this.num

5)局部内部类(定义在成员方法内)来访问局部变量

可以直接访问外部类的成员

在局部位置,可以创建内部类对象,通过对象调用内部类的方法,来使用局部内部类功能

@例题2:局部内部类访问局部变量的注意事项

局部内部类访问的局部变量必须用final修饰

因为局部变量会随着方法的调用完毕而消失,这个时候,局部对象并没有立刻从堆内存中消失,还要使用那个变量。为了让数据还能继续被使用,就用final修饰,这样在堆内存里面存储的其实是一个常量值。通过反编译工具可以看一下

6)匿名内部类

①是内部类的简化方法

前提是存在一个类或者接口,可以是具体类也可以是抽象类

格式: new 类名或者接口名(){重写方法};

本质:是一个继承了该类或者实现了接口的子类匿名对象

②匿名内部类方法的调用



直接在匿名对象后调用(要在构造完匿名对象后加分号),但只能调一次

对需要调用多个方法时,需定义类或接口的对象,通过该对象来调用(多态的思想)

③在开发中的应用:作为实现类成员方法的参数,在参数列表内直接定义匿名内部类,套用①中格式即可

@例题3:匿名内部类面试题:

按照要求,补齐代码

interface Inter { void show(); }

class Outer { //补齐代码 }

class OuterDemo {

public static void main(String[] args) {

Outer.method().show();

// Outer.method()可以得知method是outer 中的一个静态方法,返回的是一个对象。又由于接口Inter中有一个show()方法,所以我认为method()方法的返回值类型

}

}

要求在控制台输出”HelloWorld”

JAVA自学笔记10的更多相关文章

  1. JAVA自学笔记05

    JAVA自学笔记05 1.方法 1)方法就是完成特定功能的代码块,类似C语言中的函数. 2)格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2,-){ 函数体; return ...

  2. JAVA自学笔记06

    JAVA自学笔记06 1.二维数组 1)格式: ①数据类型[][]数组名 = new 数据类型[m][n]; 或 数据类型[]数组名[]=new 数据类型[m][n]; m表示这个二维数组有多少个一维 ...

  3. JAVA自学笔记04

    JAVA自学笔记04 1.switch语句 1)格式:switch(表达式){ case 值1: 语句体1; break; case 值2: 语句体2; break; - default: 语句体n+ ...

  4. JAVA自学笔记11

    JAVA自学笔记11 1:Eclipse的安装 2:用Eclipse写一个HelloWorld案例,最终在控制台输出你的名字 A:创建项目 B:在src目录下创建包.cn.itcast C:在cn.i ...

  5. JAVA自学笔记14

    JAVA自学笔记14 1.正则表达式 1)是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.其实就是一种规则.有自己的特殊应用 2)组成规则: 规则字符在java.util.rege ...

  6. JAVA自学笔记15

    JAVA自学笔记15 @例题1:共有5个学生,请把五个学生的信息存储到数组中,并遍历数组,并获取每个学生的信息 Students[] students=new Student[5]; Student ...

  7. JAVA自学笔记18

    JAVA自学笔记18 1.Map接口: 1)功能: 2) Map<String,String>m=new HashMap<String,String>(); //添加元素,元素 ...

  8. JAVA自学笔记21

    JAVA自学笔记21 1.转换流 由于字节流操作中文不是非常方便,因此java提供了转换流 字符流=字节流+编码表 1)编码表 由字符及其对应的数值组成的一张表 图解: 2)String类的编码和解码 ...

  9. JAVA自学笔记22

    JAVA自学笔记22 1.操作基本数据类型的流 DataInputStream DataOutputStream 数据输出流允许应用程序以适当方式将基本的Java数据类型写入输出流中.然后,应用程序可 ...

随机推荐

  1. 【loj6029】「雅礼集训 2017 Day1」市场&&【uoj#228】基础数据结构练习题

    题解: 这两道题加上区间取min max应该算线段树几道比较不寻常的题目 其实也是挺好理解的 对于区间/d 显然在log次后就会等于0 而我们注意到如果区间中数都相等那么就可以一起除 也就是说每个区间 ...

  2. Spring boot自定义启动字符画(banner)

    spring boot项目启动时会打印spring boot的ANSI字符画,可以进行自定义. 如何自定义 实现方式非常简单,我们只需要在Spring Boot工程的/src/main/resourc ...

  3. fillder---安装证书(抓取https)

    1.fillder中设置如下(不用管为啥,按照这个设置就对了) 2.需要在手机上安装证书,有两种方式 方式一:fillder直接导出到手机中 方式二:手机上直接下载 打开手机自带浏览器:网址输入[XX ...

  4. nginx安装,运行(ubuntu)

    文本只涉及单节点nginx 安装gcc g++依赖库 apt-get install build-essential apt-get install libtool 安装pcre依赖库 apt-get ...

  5. 06. Matplotlib 2 |折线图| 柱状图| 堆叠图| 面积图| 填图| 饼图| 直方图| 散点图| 极坐标| 图箱型图

    1.基本图表绘制 plt.plot() 图表类别:线形图.柱状图.密度图,以横纵坐标两个维度为主同时可延展出多种其他图表样式 plt.plot(kind='line', ax=None, figsiz ...

  6. 005 使用SpringMVC开发restful API三--处理创建请求

    一:主要任务 1.说明 @RequestBody 映射请求体到java方法的参数 日期类型参数的处理 @Valid注解 BindingResult验证请求参数的合法性并处理校验结果 二:@Reques ...

  7. 使用loadrunner录制脚本的思路和注意要点

    基本思路如下图: 注意要点有如下几点: 1.性能测试往往需要准备大批量的数据,大批量数据的生成方法有很多种,常见的有: (1)编写SQL语句来插入数据 (2)使用DataFactory等专业的数据生成 ...

  8. PAT (Basic Level) Practise - 我要通过!

    “答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”. 得到“答案正确”的条件是: 1 ...

  9. js面向对象实例

    JSON方式来编写对象简单 不适合多个对象 var json={a:12, show:function (){ alert(this); }};json.show(); //理所当然弹出的是objec ...

  10. TMS320DM642开发之Bug1-Memory map error:READ access by cpu to address 0x1b3f018(Device Config Space)which is not supported in simulator

    load程序到DM642开发板上之后,点击了run按钮出现了如下的错误: Memory map error:READ access by cpu to address 0x1b3f018(Device ...