内部类好处-为什么要使用内部类,好处是什么

问题描述

为什么要使用内部类,好处是什么

(1):有一个计算器类,具有运算功能,能对两个整数进行相加运算
(2):有一个闹钟类,具有闹铃功能,能发出懒猪起床的声音
(3):有一个手机类,需要同时拥有运算功能和闹铃功能,通过内部类实现多继承
(4):创建测试类,测试继承的两个功能
package com.bwie.innerClassDemo;

class Alarm {
public void ring() {
System.out.println("懒猪起床");
}
}

class Computer {
public void count(int a, int b) {
System.out.println("a+b=" + (a + b));
}
}
class Phone{
private myAlarm ma=new myAlarm();
private MyComputer mc=new MyComputer();
private class myAlarm extends Alarm{
public void ring() {
System.out.println("Iphone手机呼唤懒猪起床");
}
}
private class MyComputer extends Computer{

}
public void ring(){
    ma.ring();
}
public void count(int a,int b){
    mc.count(a, b);
}

}
public class TestPhone{
public static void main(String[] args) {
Phone p=new Phone();
p.ring();
p.count(12, 3);
}
}

没感觉出这段代码有什么好处,倒是觉得很繁琐,麻烦?还是不明白老师为啥这么写?

解决方案

内部类有几个好处,一个是更清晰的层次关系,如果一个类型依附于另一个类型,那么内部类很好体现了这种层次关系。
一个是内部类相当于友元类,可以定义对于外部来说私有,又可以被内部类访问的成员和函数。
当然,你的代码仅仅是用于学习目的的,为写而写的,本身就没有意义,换言之,不用内部类,它也没用,当然你觉得它没有好处。

解决方案二:

楼上说的是对的,还有其实内部类的设计也是为了弥补JAVA里头多继承的不足,还有就是代码代码写起来能更加简洁(比如匿名内部类。。)

解决方案三:

1.内部类可以很好的实现隐藏

一般的非内部类,是不允许有 private 与protected权限的,但内部类可以

2.内部类拥有外围类的所有元素的访问权限

3.可是实现多重继承

4.可以避免修改接口而实现同一个类中两种同名方法的调用。

解决方案四:

在一个类中定义的类称为嵌套类,定义嵌套类的类称为外围类。
  对嵌套类的若干说明:

  1、从作用域的角度看,嵌套类被隐藏在外围类之中,该类名只能在外围类中使用。如果在外围类的作用域内使用该类名时,需要加名字限定。

  2、从访问权限的角度来看,嵌套类名与它的外围类的对象成员名具有相同的访问权限规则。不能访问嵌套类的对象中的私有成员函数,也不能对外围类的私有部分中的嵌套类建立对象。

  3、嵌套类中的成员函数可以在它的类体外定义。

  4、嵌套类中说明的成员不是外围类中对象的成员,反之亦然。嵌套类的成员函数对外围类的成员没有访问权,反之亦然。国此,在分析嵌套类与外围类的成员访问关系时,往往把嵌套类看作非嵌套类来处理。

时间: 2024-08-22 15:00:31

内部类好处-为什么要使用内部类,好处是什么的相关文章

抽象类和实现接口有什么区别?抽象有什么好处?接口有什么好处!

问题描述 抽象有什么好处?接口有什么好处! 解决方案 抽象类和接口的区别:(完全可以百度能找到答案的)1.修饰的关键字不同 抽象类修饰关键字 abstract 接口是 interface2 抽象类除了有抽象方法还可以有普通方法 而接口除了抽象方法 不能有普通方法3.抽象类对于其他类只能单一继承 而接口 一个人类可以实现多个接口 说白了接口就是java中来处理c中的多继承问题而设计的4 接口能继承 抽象类能实现接口 2者各有各的好处 都是能解决一类问题而已!解决方案二:看不下去了,十年前的问题,十

JAVA之旅(九)——Object类,equals,toString,getClass,内部类访问规则,静态内部类,内部类原则,匿名内部类

JAVA之旅(九)--Object类,equals,toString,getClass,内部类访问规则,静态内部类,内部类原则,匿名内部类 天天被一些琐事骚扰,学习还得继续 一.Object类 Object是什么呢?我们可以翻阅JAVA API文档看他的介绍 上面介绍说,object是类层次结构的根类,也就是超类 Object:是所有对象的直接后者间继承关系,传说中的老祖宗,你父亲还有父亲,你父亲的父亲还有父亲是爷爷,这是继承关系,但是你的祖宗却只有一位,该类中定义的肯定是所有对象都具备的功能

android 内部类-android为什么要使用内部类

问题描述 android为什么要使用内部类 android为什要使用内部类.android内部类的主要充当什么角色.

内部类-java方法参数的修饰符问题

问题描述 java方法参数的修饰符问题 java在写方法时,为什么有的方法参数用final修饰? 还有就是内部类存在的意义是什么? 也就是说方法中的内部类和类中的内部类各有什么应用场景(请有实战经验的大神各自举个例子)? //问题补充(关于方法中的内部类) 我的意思是: pubic class TestClass{ public void fun(){ public class Test1{ //........ } } } 解决方案 为了实现一些内容,常常需要这么玩: public void

浅析Java中的嵌套类和内部类

以前看<Java编程思想>的时候,看到过嵌套类跟内部类的区别,不过后来就把它们的概念给忘了吧.昨天在看<数据结构与算法分析(Java语言版)>的时候,又遇到了这个概念,当时就很大的疑惑:嵌套类跟内部类有什么区别?只有是否有关键字static的区别吗? 所以今天找了个时间查了一下两者的详细区别,总结在这篇博客中,既方便自己的复习和学习,也启示他人吧. 1,概念: 定义在一个类内部的类,叫作"嵌套类".嵌套类分为两种:static的和非static的.后者又有一个专

java内部类总结

内部类是指在一个外部类的内部再定义一个类. 内部类作为外部类的一个成员,并且依附于外部类而存在的. 内部类可为静态,可用protected和private修饰.(而外部类不可以:外部类只能使用public和默认的). 内部类分为:成员内部类.局部内部类.静态内部类.匿名内部类 几种内部类的共性:A.内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的.class文件,但是前面冠以外部类的类命和$符号,比如Outer.class和Outer$Inner.class.B.内部类不能用普通的方

Java内部类详解

说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就来一探究竟.下面是本文的目录大纲: 一.内部类基础 二.深入理解内部类 三.内部类的使用场景和好处 四.常见的与内部类相关的笔试面试题 若有不正之处,请多谅解并欢迎批评指正. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/dolphin0520/p/3811445.html 一

Java内部类详解(转)

说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉.原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法.今天我们就来一探究竟.下面是本文的目录大纲: 一.内部类基础 二.深入理解内部类 三.内部类的使用场景和好处 四.常见的与内部类相关的笔试面试题 若有不正之处,请多谅解并欢迎批评指正. 请尊重作者劳动成果,转载请标明原文链接: http://www.cnblogs.com/dolphin0520/p/3811445.html 一

Java 中的内部类和匿名类

Java 内部类有什么好处?为什么需要内部类? 首先举一个简单的例子,如果你想实现一个接口,但是这个接口中的一个方法和你构想的这个类中的一个方法的名称,参数相同,你应该怎么办?这时候,你可以建一个内部类实现这个接口.由于内部类对外部类的所有内容都是可访问的,所以这样做可以完成所有你直接实现这个接口的功能. 不过你可能要质疑,更改一下方法的不就行了吗? 的确,以此作为设计内部类的理由,实在没有说服力. 真正的原因是这样的,java 中的内部类和接口加在一起,可以的解决常被 C++ 程序员抱怨 ja