java基础语法-内部类与匿名内部类
1.成员内部类(声明在类内部&&方法之外)
class Person{
String name = "韩梅梅";
int age;
class Bird{
String name = "黄鹂";
int id;
void setName(String name){
System.out.println(name);//方法传入的name-杜鹃
System.out.println(this.name);//Bird对象的name-黄鹂
System.out.println(Person.this.name);//Person对象的name-韩梅梅
}
void info(){
show();
}
}
static class Dog{
}
void show(){
System.out.println("我是show()方法");
}
public static void main(String[] args) {
Person.Dog dog = new Person.Dog();//静态内部类的对象生成方法
Person.Bird bird = new Person().new Bird();//非静态内部类的对象构造方法
bird.info();
bird.setName("杜鹃");
}
}
2.局部内部类(声明在方法内部)
class OuterClass{
void method(){
class InnerClass{
}
}
Comparable getComparable(){//内部类
class MyComparable implements Comparable{
@Override
public int compareTo(Object o) {
return 0;
}
}return new MyComparable();
}
Comparable getComparable1(){//匿名内部类
return new Comparable() {
@Override
public int compareTo(Object o) {
return 0;
}
};
}
}
3.匿名内部类的应用实例
public class Main3 {
public static void main(String[] args) {
//该方式类和接口之间的关系清晰便于阅读
Main3 main3 = new Main3();
NoteBook noteBook = new NoteBook();
main3.show(noteBook);
//该方式隐匿了类与接口之间的关系
main3.show(new Product() {
@Override
public void getName() {
System.out.println("Iphone5s");
}
@Override
public void getPrice() {
System.out.println("5288");
}
});
//该方式隐匿了类的,但接口的操作清晰
Product product = new Product() {
@Override
public void getName() {
System.out.println("Galaxy Note3");
}
@Override
public void getPrice() {
System.out.println("5288");
}
};
System.out.println();
Product product1 =main3.getProduct();
product1.getName();
product1.getPrice();
Product product2 =main3.getProduct();
product2.getName();
product2.getPrice();
}
void show(Product product){
product.getName();
product.getPrice();
}
Product getProduct(){
class Camera implements Product{
@Override
public void getName() {
System.out.println("数码相机");
}
@Override
public void getPrice() {
System.out.println("400");
}
}return new Camera();
}
Product getProduct1(){
return new Product(){
@Override
public void getName() {
System.out.println("电子书");
}
@Override
public void getPrice() {
System.out.println("1000");
}
};
}
}
interface Product{
void getName();
void getPrice();
}
class NoteBook implements Product{
@Override
public void getName() {
System.out.println("HP笔记本");
}
@Override
public void getPrice() {
System.out.println("¥5000");
}
}
以上内容来源于谷粒学院java教程第135集。网址http://www.gulixueyuan.com/course/39/task/443/show
java基础语法-内部类与匿名内部类的更多相关文章
- JAVA基础语法——标识符、修饰符、关键字(个人整理总结)
JAVA基础语法——标识符.修饰符.关键字 一 . 标识符 1.1 什么是标识符 就是程序员在定义java程序时,自定义的一些名字,例如helloworld 程序里关键字class 后跟的Dem ...
- Java基础语法(11)-面向对象之关键字
title: Java基础语法(11)-面向对象之关键字 blog: CSDN data: Java学习路线及视频 1.this this是什么 它在方法内部使用,即这个方法所属对象的引用: clas ...
- JAVA基础语法:函数(方法)、类和对象(转载)
4.JAVA基础语法:函数(方法).类和对象 函数 在java中函数也称为方法,是一段具备某种功能的可重用代码块. 一个函数包括这几部分: 函数头 函数头包括函数访问修饰符,函数返回值类型, 函数名, ...
- java面向对象编程——第二章 java基础语法
第二章 java基础语法 1. java关键字 abstract boolean break byte case catch char class const continue default do ...
- Java基础语法(下篇)
Java基础语法(下篇) 内容概要: (1)函数的定义 (2)函数的特点 (3)函数的应用 (4)函数的重载 ...
- Java基础语法(上篇)
Java基础语法(上篇) 知识概要: (1)关键字的表示与规范 (2)标示符 (3)注释 (4 ...
- java——基础语法
java基础语法 1.关键字:java赋予特殊含义的单词. 2.标识符:程序中开发人员自定义的名词,例如:类名,函数名,变量名(注意事项:①不能以阿拉伯数字开头②不能采用关键字). 3.常量:固定的数 ...
- java基础语法(二)--单列模式
java基础语法(二)--单列模式 /** * 功能:单列模式 * @author Administrator * */ public class SingletonTest { public sta ...
- java基础语法(一)
java基础语法(一) 1.类是一种抽象的概念,对象是类的一种具体表示形式,是具体的概念.先有类,然后由类来生成 对象(Object).对象又叫做实例(Instance). 2.类由两大部分构成:属性 ...
随机推荐
- helm-chart6,子chart 和全局值
chart可以有称为子chart的依赖关系 关于子chart 1,子chart认为是"独立的",即子chart不能明确依赖于其父chart. 2,子chart无法访问其父项的值. ...
- STS的安装以及IDEA安装和破解过程
一.STS的下载 1·下载地址:直接百度搜索STS,选择Download STS 3 2.选择电脑对应的版本 直接下载 3.安装包解压后在有jdk的情况下就可以直接使用 二.IDEA的安装 下载网址: ...
- [Codeforces Round #438][Codeforces 868D. Huge Strings]
题目链接:868D - Huge Strings 题目大意:有\(n\)个字符串,\(m\)次操作,每次操作把两个字符串拼在一起,并询问这个新串的价值.定义一个新串的价值\(k\)为:最大的\(k\) ...
- Red hat查找命令所属的rpm包
当安装命令软件包时,很多时候命令名不一定就是软件包的名字 如scp命令,其命令名就和软件包名字不一样,直接安装会失败: #yum install scp .... Trying other mirro ...
- leetcode 单链表相关题目汇总
leetcode-19-Remove Nth From End of List—移除链表中倒数第n个元素 leetcode-21-Merge Two Sorted Lists—两个已排序链表归并 ...
- python菜鸟学习心得
禁忌:学习没精力,就是没精打采.没有热情. 禁忌:学习一半,然后,放在一边. 禁忌:不要东一榔头,西一棒锤. 禁忌:学习要用心. 激情是动力,专注是效率 每次学习都是绕着网络转了一圈.还是要一步一个脚 ...
- Nginx负载均衡后端健康检查(支持HTTP和TCP)
之前有一篇文章记录nginx负载均衡后端检查,链接为 https://www.cnblogs.com/minseo/p/9511456.html 但是只包含http健康检查不包含tcp下面安装ngin ...
- Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead.
运行代码时,一直报错: 经过查询后才知道,vue模板只能有一个跟对象 我是这样写的 最后修改为 就可以正常运行了
- ide phpStorm 配置PHP路径并本地执行PHP脚本
1.打开设置(File - Settings) 2. 3. 4.到需要执行脚本的文件处,右击 - Run 5.如果本地还未安装PHP,可以下载Xampp,并将PHP目录新增至系统环境变量Path处,重 ...
- 线性表->应用->一元多项式
文字描述 在数学上,一个一元多项式可以按升幂写成如下形式. 它由n+1个系数唯一确定.因此,在计算机里,可以用一个线性表P来表示,P中每一项的指数i隐含在其系数pi的序号里. 但是在通常的应用中, ...