class Person{
private String name;
private int age;
public Person(String name,int age){
this.name = name;
this.age = age;
}
public void info(String prof,int score){
System.out.println("我的专业:"+prof+",我的成绩"+score);
}
@Override
public String toString(){
return "姓名:"+this.name+",年龄:"+this.age;
}
}
public class app13_2 {
public static void main(String[] args) {
Class<Person> pc = Person.class;
try{//返回参数类型为String和int的构造方法
Constructor con = pc.getConstructor(String.class,int.class);
System.out.print("输出构造方法名称:"+con.getName());
Class []pt = con.getParameterTypes();
for (int i = 0; i <pt.length ; i++) {
System.out.print(",参数:"+pt[i].getName());//输出构造方法参数类型
}
}
catch(NoSuchMethodException e){
e.printStackTrace();
}
Field []fls = pc.getDeclaredFields();//获得所有成员变量
for (Field f: fls
) {
int mod = f.getModifiers();//获得修饰符
System.out.print("\n 成员变量修饰符:"+Modifier.toString(mod));//输出修饰符
Class type = f.getType();
System.out.print(";名称:"+f.getName());
System.out.print(";类型:"+type.getName());
}
System.out.println(" ");
Method []mds = pc.getMethods();
for (Method m:mds
) {
System.out.print("方法:"+m.getName());
System.out.println("参数个数:"+m.getParameterCount());//输出参数个数
Parameter[] par = m.getParameters();
int index = 1;
for (Parameter p:par
) {
if(p.isNamePresent()){
System.out.println("-----------第"+(index)+"个参数的信息----------------");
System.out.println("参数名:"+p.getName());//输出方法参数的名称
System.out.println("参数类型:"+p.getType());//输出方法类型的名称
System.out.println("泛型类型:"+p.getParameterizedType());//输出泛型类型
System.out.println("-------------------------------------------------");
}
}
}
}
}

Class类对象创建以及方法调用

1.内部类是包含在类中的类。也称嵌套类。主要作用:将逻辑上相关的类放在一起
包含内部类的类称为外部类,内部类可看做外部类一个成员,内部类也称成员类
2.内部类拥有自己的成员变量和成员方法,建立内部类可调用成员变量和方法
3.内部类不能与外部类重名,且内部类的内部类不能与任何一层外部类同名
4.外部类引用内部类时,必须内部类名前带外部类名字才能使用。用new运算符有创建
内部类时也要在new前面带对象变量
5.在外部类中,通过一个内部类对象引用内部类中的成员
在内部类中直接引用外部类成员
6.内部类创建对象从外部类之外被调用,必须将内部类声明为public

public class app13_3 {
private int age;
public class Student{
String name;
public Student(String n,int a){
this.name = n;
age = a;
}
public void output(){
System.out.println("姓名:"+this.name+";年龄:"+age);
}
}
public void output(){
Student stu = new Student("丁宝乐",16);
stu.output();
} public static void main(String[] args) {
app13_3 a = new app13_3();
a.output();
}
}

7.匿名内部类是一种特殊的内部类,没有类名,定义类或实现接口时生成该类一个对象
类的对象只用一次且定义类的同时就创建该类的一个对象,且类定义前面是new运算符
8.定义内部类时直接用其父类名字或它实现接口名字
语法格式如下:new TypeName(){
匿名类的类体;//父类名或接口名,()里面不允许有参数
}
9.匿名内部类不能用时继承一个类又实现一个接口,也不能实现多个接口
10.匿名内部类没有名字,故没有构造方法和修饰符,创建对象不能带参数
11.匿名内部类返回的是一个对象引用,可将它直接使用或赋值给一个引用变量
如:TypeName obj = new TypeName(){
匿名内部类实体}
创建匿名内部类对象作为方法调用参数
如:someMethod(new TypeName(){
匿名内部类类体}
);

public class app13_4 {
public static void main(String[] args) {
(new inner(){
//弥补内部类里面没有定义的方法
void setName(String n){
name = n;
System.out.println("姓名:"+name);
}
}
).setName("张华");//执行匿名内部类方法
}
static class inner
{
String name;
}
}

总结:内部类是类中的类,可调用外部类成员变量,但也是外部类的一个成员,故最后的实现还是要通过外部类定义对象实现方法的实现

匿名内部类是创建类的同时创建对象。且没有有参构造方法和修饰符,因为本身没有类名

可通过(new inner{}).setName();这是一个对象对方法的调用即(new inner{})即是一个创建类的同时创建对象的匿名内部类,

且类名必须是其父类或者实现接口类的名称

new inner(){}大括号中是匿名内部类的类体,里面可以定义父类没有定义到的方法例如setName()方法

五月十四号java基础知识点的更多相关文章

  1. 十四、Java基础---------String、StringBuffer、StringBuilder基本应用

    在前面的博客中曾提及Java的数据类型分为基本数据类型,和引用数据类型,而String便是最常见的应用数据类型,本文将着重介绍这一引用数据类型的用法. String 字符串     String类是对 ...

  2. 《手把手教你》系列基础篇(八十四)-java+ selenium自动化测试-框架设计基础-TestNG日志-上篇(详解教程)

    1.简介 TestNG还为我们提供了测试的记录功能-日志.例如,在运行测试用例期间,用户希望在控制台中记录一些信息.信息可以是任何细节取决于目的.牢记我们正在使用Selenium进行测试,我们需要有助 ...

  3. Java基础知识点(四)

    前言:记录Java基础知识点,方便熟悉与掌握. 1.面向对象的"六原则一法则" “六原则一法则”:单一职责原则.开闭原则.依赖倒转原则.里氏替换原则.接口隔离原则.合成聚合复用原则 ...

  4. Java基础知识点总结

    前言 本文主要是我之前复习Java基础原理过程中写的Java基础知识点总结.Java的知识点其实非常多,并且有些知识点比较难以理解,有时候我们自以为理解了某些内容,其实可能只是停留在表面上,没有理解其 ...

  5. 四、Android学习第四天——JAVA基础回顾(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 四.Android学习第四天——JAVA基础回顾 这才学习Android的 ...

  6. Java基础知识点(三)

    前言:准备将Java基础知识点总结成一个系列,用于平常复习并加深理解.每篇尽量做到短小精悍,便于阅读. 1.Math类中相关函数 Math.floor(x):返回不大于x的最大整数.eg:Math.f ...

  7. Java基础知识点(二)

    前言:Java的基础知识点不能间断. 1.Array和ArrayList的区别 关于Array的用法,参看:http://blog.csdn.net/b_11111/article/details/5 ...

  8. Java基础知识点(一)

    前言:本篇随笔,主要记录Java的基础知识点,不管是用于项目或者面试中,笔者认为都非常有用,所以将持续更新...... 1.Java的访问权限 Java中有四种访问权限:默认访问权限.public.p ...

  9. JAVA基础知识点总结(全集)

    1.JAVA简介 1.1java体系结构:j2se,javaweb,j2ee 1.2java特点:平台无关(虚拟机),垃圾回收(使得java更加稳定) 1.3 JDK与JRE,JDK:java开发环境 ...

  10. java基础知识点补充---二维数组

    #java基础知识点补充---二维数组 首先定义一个二维数组 int[][] ns={ {1,2,3,4}, {5,6,7,8}, {9,10,11,12}, {13,14,15,16} }; 实现遍 ...

随机推荐

  1. k8s集群部署kafka

    一.部署步骤 1.部署NFS并挂载共享目录 2.部署zookeeper集群 3.部署kafka集群 4.测试kafka 二.部署NFS并挂载共享目录 注:使用云产品的NAS存储可跳过此步骤 1.服务端 ...

  2. C++从键盘读取一行的方法

    从键盘读取一行的方法 cin类中的成员函数getline()和get()--使用数组来处理字符串 cin.getline(数组,要读入的字符数).getline()将丢弃换行符.这个成员函数通过换行符 ...

  3. git在linux安装步骤详解!!

    linux上安装,以centos 7.x为例 yum命令安装 yum install gityum install 安装的git不是最新版本,如需最新版本需要自行编译 到下面的网站下载合适的版本 ht ...

  4. Java 方法详解 与数组

    基础阶段: 1.何谓方法 何谓方法?◆System.out.println(),那么它是什么呢?◆Java方法是语句的集合,它们在- -起执行一个功能.   ◆方法是解决一类问题的步骤的有序组合    ...

  5. RabbitMQ管理控制台的使用

    RabbitMQ管理控制台的使用 添加一个用户 添加一个Virtual Hosts 把虚拟机和用户绑定 点击创建的虚拟机 配置 rabbitmq.config cp rabbitmq.config.e ...

  6. oracle 将以逗号分隔的列拆成多行的的方法

    原表如下 select * from hs_acct.custattach a where a.client_id='888827395'; 将列拆分成多行的语句 select * from ( -- ...

  7. Ubuntu系统Root用户无法登录解决办法

    默认 系统 root 登录 图形界面,出现 登录失败.解决方法如下: 1,登录普通用户, 打开终端执行命令, 使用su root或sudo -i切换到root用户(必须) su root 按照提示输入 ...

  8. ORACLE ORA-12638:身份证明检索失败

    使用PLSQL连接远程数据库时,有时候会遇到提示ORA-12638:身份证明检索失败的问题,怎么办呢?有两种方法,选择一种更改就行了,网络上大多是第一种方法,如果已经找过不是你想要的答案,那不妨直接看 ...

  9. 获取指定网卡的ip

    #!/usr/bin/env python # -*- coding: utf-8 -*- import socket import fcntl import struct def get_ip_ad ...

  10. SpringSecurity登录验证,多个用户表

    在开始之前我想感叹一句,技术久了不回头看看真的会忘记的,这次公司让我重新开发一个程序,项目架构为单体多模块开发,其中有个需求就是需要不同用户表进行登录,且不同表的用户名.手机号都可以重复. 这样的需求 ...