Java笔记9:构造方法,内部类
构造方法:
1:
#构造方法的名称必须与类名一样。
#构造方法的声明处不能有任何返回值类型的声明。
#不能在构造方法中使用人turn返回一个值
实例化对象时候调用构造方法
声明时候不调用构造方法
class Person
{
public Person(){
System.out.print("构造方法");
}
}
public class test07
{
public static void main(String args[]){
Person per = null;//声明对象
per = new Person();
}
}
结果如下:
F:\test>javac test07.java
F:\test>java test07
构造方法
2:
在整个java操作中,如果一个类中没有明确的声明一个构造方法,则会自动生成一个无参数的什么都不做的构造方法,供用户使用。
class Person
{
public Person(){
}
}
3:
构造方法的主要作用是为类中的属性初始化,既然是方法,则方法中肯定可以传递参数。
此时定义一个构造,同时传递参数
class Person{
private String name;
private int age;
public Person(String n,int a){
this.setName(n);
this.setAge(a);
}
public void setName(String n){
name = n;
}
public void setAge( int a){
if(a>=0&&a<=150){
age = a;
}
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
public void tell(){
System.out.println("姓名:"+name+" 年龄:"+age);
}
}
public class test07
{
public static void main(String args[]){
Person per = null;//声明对象
per = new Person("张三",30);
per.tell();
}
}
结果为:
F:\test>javac test07.java
F:\test>java test07
姓名:张三 年龄:30
4:构造方法的重载
class Person{
private String name;
private int age;
public Person(){}
public Person(String n,int a){
this.setName(n);
this.setAge(a);
}
public void setName(String n){
name = n;
}
public void setAge( int a){
if(a>=0&&a<=150){
age = a;
}
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
public void tell(){
System.out.println("姓名:"+name+" 年龄:"+age);
}
}
public class test07
{
public static void main(String args[]){
Person per = null;//声明对象
per = new Person("张三",30);
per.tell();
}
}
5:匿名对象:
在java中如果一个对象只是使用一次,则就可以将其定义为匿名对象、
class Person{
private String name;
private int age;
public Person(){}
public Person(String n,int a){
this.setName(n);
this.setAge(a);
}
public void setName(String n){
name = n;
}
public void setAge( int a){
if(a>=0&&a<=150){
age = a;
}
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
public void tell(){
System.out.println("姓名:"+name+" 年龄:"+age);
}
}
public class test07
{
public static void main(String args[]){
//Person per = null;//声明对象
new Person("张三",30).tell();
//per.tell();
}
}
所谓的匿名对象只是在堆内存中开辟空间,而不存在栈内存的引用。。。
public class test07
{
public static void main(String args[]){
//Person per = null;//声明对象
new Person("张三",30).tell();
//per.tell();
}
}
内部类:
1.1 什么是内部类?
# 一个类的内部还有类,就成为内部类。如果在类outer的内部再定义一个类inner,此时类inner就称为内部类,而类outer则称为外部类。
# 内部类可以声明为public或private,此时对其访问的限制于成员变量和方法完全相同。
1.2 内部类的定义格式
标示符 class 外部类的名称{
//外部类的成员
标示符 class 内部类的名称
{
//内部类的成员
}
}
[java] view plaincopyprint?
class Outer
{
private String info="hello,word!";
class Inner
{
public void print(){
System.out.println(info);
}
};
public void fun(){
new Inner().print();
}
};
public class Inner01
{
public static void main(String args[]){
new Outer().fun();
}
}
结果为:
F:\java>javac Inner01.java
F:\java>java Inner01
hello,word!
1.3:内部类的缺点:
1:正常的一个类操作时,在类中最好只定义属性或方法。如果定义一个类的话,就破坏了程序的一个结构。
优点:
将以上的两个类变成两个独立的类,在分析:
[java] view plaincopyprint?
class Outer
{
private String info="hello,word!";
public void fun(){
new Inner().print();
}
public String getInfo(){
return this.info;
}
};
class Inner
{
public void print(){
System.out.println(new Outer().getInfo());
}
};
public class Inner01
{
public static void main(String args[]){
new Outer().fun();
}
}
以上程序实例了两个Outer对象,显然不合适:
可以这样改:
[java] view plaincopyprint?
class Outer
{
private String info="hello,word!";
public void fun(){
new Inner(this).print();
}
public String getInfo(){
return this.info;
}
};
class Inner
{
private Outer out=null;
public Inner(Outer out){
this.out=out;
}
public void print(){
System.out.println(new Outer().getInfo());
}
};
public class Inner01
{
public static void main(String args[]){
new Outer().fun();
}
}
结果为:
F:\java>javac Inner01.java
F:\java>java Inner01
hello,word!
:1.4:
如果内部类拿到外部以后,会发现代码增加了,而且复杂度也增加了,使用内部类的最大优点:可以方便访问外部类中的私有属性。
但是以上的内部类是无法在外部直接使用的,
1.5:使用static声明内部类
如果一个内部类使用static关键字声明,则此内部类就成为外部类,可以直接通过外部类进行访问。
转载于:https://blog.51cto.com/1095221645/1427052
Java笔记9:构造方法,内部类相关推荐
- 【java笔记】File类(1)概述,静态成员,构造方法
[java笔记]File类(2):常用方法_m0_52043808的博客-CSDN博客 java.io.File类: 文件和目录路径名的抽象表示. ●java把电脑中文件和文件夹(目录)封装为了一个F ...
- Java编程笔记7:内部类
Java编程笔记7:内部类 图源:PHP中文网 所谓的内部类,其实就是定义在类中的类.这和Java编程笔记6:接口 - 魔芋红茶's blog (icexmoon.xyz)中提到的接口嵌套的方式有点相 ...
- Java笔记:抽象类和接口
Java笔记:抽象类和接口 抽象类 接口 接口多重实现 接口继承接口 嵌套接口 工厂模式 抽象类 在普通类中,一个类必须实现自身写的所有方法,每个方法必须含有自己的方法体.即便先创建一个父类,再由后续 ...
- java笔记1/3 (B站hsp学java)
JAVA基础 文章目录 JAVA基础 变量 整形(INT) 浮点型(float/double) 字符型(char) 布尔类型(boolean) 基础数据类型的转换 自动类型转换 强制类型转换 重载 可 ...
- Java笔记-Java日常笔记-Java核心语言-史上最全Java笔记-Java烂笔头-实时更新(~v~)
阿一的日常Java笔记,实时更新,有什么问题可以留言交流一下,大家一起共同进步!!! 1.Java基础 1.1.基本语法 1.1.1.关键字 定义:被java赋予特殊含义的字符串(单词): 关 ...
- Java笔记整理五(Iterator接口,泛型,常见数据结构(栈,队列,数组,链表,红黑树,集合),jdk新特性,异常,多线程,Lambda表达式)
Java笔记整理五 1.1Iterator接口 Collection接口与Map接口主要用于存储元素,而Iterator主要用于迭代访问(即遍历)Collection中的元素,因此Iterator对象 ...
- java笔记(3):String(2)
java笔记(3):String(2) 参考资料:网易云网课李兴华:http://study.163.com/course/courseMain.htm?courseId=1455026 一.字符串一 ...
- Java笔记04-核心类库
Java笔记04-核心类库 Object类 1.1 常用的包 java.lang包 -该包是Java语言中的核心包,该包中的内容由Java虚拟机自动导入 如:String类,System类等java. ...
- Java笔记03-Constructor Override
Java笔记03-Constructor & Override 构造方法基本概念 构造方法是类中的一种特殊方法 它是在类创建对象(实例化)的时候自动调用的方法 这个和python中的__ini ...
- 菜鸟学Java笔记1
这两天通过视频和书籍在自学java.每天学一点,每天做一点笔记,希望有所收获! 1,Java运行中的内存分配 理解内存的分配,也就理解了一切.对于java而言,内存分为四块:代码区(code)/数据区 ...
最新文章
- 2022-2028年中国电商物流行业投资分析及前景预测报告
- Python 相对路径问题:“No such file or directory“,原因及解决方法
- android novate乱码,Android RxJava+Retrofit2+RxBinding
- MFC 蜂鸣声或播放音频
- 深入理解编译优化之循环展开和粗化锁
- JEPaaS笔记||学习培训资料||案例视频 【全套】
- GTADIR check object exist in another system
- vue中注意watch的执行顺序
- MySQL filesort优化案例一则
- ubuntu完全卸载mysql
- 触屏java版象棋下载 游戏下载安装_中国象棋官方版下载
- 新移动硬盘 测试软件,西部数据移动硬盘检测工具WD Drive Utilities 2.0.0.54中文免费版...
- c语言课程火车售票报告,C语言课程设计报告书火车票务管理系统.doc
- WebLogic安装教程
- App自动绑定的五大应用场景
- android 焦点的作用,详细介绍Android中的视图焦点Focus的使用
- 个税计算、税基的处理
- 中国智能互动纺织品市场趋势报告、技术动态创新及市场预测
- docker提交比赛记录
- ISIS-广播网络DIS更新LSDB