首页 > 其他分享 >获取构造器和创建对象

获取构造器和创建对象

时间:2022-10-23 15:57:43浏览次数:50  
标签:weight sno 创建对象 构造 System 获取 println public out

package com.liu.test03;

/**
 * @author : liu
 * 日期:14:27:02
 * 描述:IntelliJ IDEA
 * 版本:1.0
 */
//子类
@MyAnnotation("abc")
public class Student extends Person implements MyInterface{
    //属性
    private int sno;//学号
    double height;//身高
    protected double weight;//体重
    public double score;//成绩

    @Override
    @MyAnnotation("helloMyMthod")
    public void myMethod() {
        System.out.println("我重写了myMethod方法");
    }

    //方法
    @MyAnnotation("三好学生")
    public String showInfo(){
        return "我是一名三好学生";
    }
    //重载方法
    public String showInfo(int a,int b){
        return "我是一名三好学生";
    }
    private void work(){
        System.out.println("我以后会找工作---》码农 程序员  程序猿  程序媛");
    }
    void happy(){
        System.out.println("做人最重要的就是开开心心");
    }
    protected int getSno(){
        return sno;
    }
    //构造器
    public Student(){

    }
    public Student(double weight,double height){
        this.weight=weight;
        this.height=height;
    }
    private Student(int sno){
        this.sno=sno;
    }
    Student(int sno,double weight){
        this.sno=sno;
        this.weight=weight;
    }
    protected Student(int sno , double weight,double height){
        this.weight=weight;
        this.sno=sno;
        this.height=height;
    }

    @Override
    public String toString() {
        return "Student{" +
                "sno=" + sno +
                ", height=" + height +
                ", weight=" + weight +
                ", score=" + score +
                '}';
    }

}
package com.liu.test03;

import java.lang.annotation.Annotation;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

/**
 * @author : liu
 * 日期:09:30:25
 * 描述:IntelliJ IDEA
 * 版本:1.0
 */
public class Test01 {
    //这是一个main方法:是程序的入口
    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException {
        //获取字节码信息
        Class cls = Student.class;
        //通过字节码信息可以获取构造器
        //getConstructors()只能获取当前运行时类的被public修饰的构造器
        Constructor[] c1 = cls.getConstructors();
        for (Constructor c:c1
             ) {
            System.out.println(c);
        }
        System.out.println("----------------------------");
        //getDeclaredConstructors()获取运行时类的全部修饰符构造器
        Constructor[] c2 = cls.getDeclaredConstructors();
        for (Constructor c:c2
             ) {
            System.out.println(c);
        }
        System.out.println("-----------------");
        //获取指定构造器
        //获取空构造器
        Constructor con1 = cls.getConstructor();
        System.out.println(con1);
        System.out.println("-----------------");
        //得到两个参数的有参构造器
        Constructor con2 = cls.getConstructor(double.class, double.class);
        System.out.println(con2);
        System.out.println("-------------------");
        //得到一个参数的有参构造器并且是private修饰的
        Constructor con3 = cls.getDeclaredConstructor(int.class);
        System.out.println(con3);

        //有了构造器以后就可以创建对象了
        Object o = con1.newInstance();
        System.out.println(o);

        Object o1 = con2.newInstance(180.5, 170.6);
        System.out.println(o1);
    }
}

 

标签:weight,sno,创建对象,构造,System,获取,println,public,out
From: https://www.cnblogs.com/jeldp/p/16818720.html

相关文章

  • Qt获取QObject对应的类名并把它转为真实类型
    QObject是有窗口类的父类,比如QWidget,QLabel,QPushButton等都直接或间接继承自QObject类。如果把某个窗口中的所有控件都装到一个QList<QObject*>中,那么如何区分当前的是那......
  • go gin 获取 参数
      post             get  ......
  • c++对象的拷贝、构造、虚构
    抽象基类​ 现有如下代码:classAbstract_base{public:virtual~Abstract_base()=0;virtualvoidinterface()const=0;virtualconstchar*mumble......
  • Java线程池submit阻塞获取结果实现原理
    前言Java线程池中提交任务运行,通常使用​​execute()​​方法就足够了。那如果想要实现在主线程中阻塞获取线程池任务运行的结果,该怎么办呢?答案是用​​submit()​​方法提......
  • 关于在 computed 使用 ref 获取 dom 结点为 undefined的问题
           原因:因为ref本身是作为渲染结果被创建的,在初始渲染的时候你不能访问它们,它们还不存在computed里面无法获取到ref解决方法:方法一:da......
  • 创建对象的内存分析
    在java中提倡万物皆对象的思想,所以对于创建一个对象时的内存分析显得很有必要对象的创建流程new关键字会触发java虚拟机进行堆内存的分配,并返回堆内存的地址一个对象......
  • Qt5获取本机IP踩坑总结
    环境win764位,cmake+qt5.9.4获取本机IP代码问题代码其实也不能说是问题,只是在在某些条件下获取的本机IP不全这里只贴出关键函数的代码 QStringListQToolki......
  • K8s获取token
    使用调用KubernetesAPI的方式获取信息时,需要使用Kubernetes的Token创建用户admin-user并授权admin-user.yamlapiVersion:v1kind:ServiceAccountmetadata:nam......
  • 高德API获取通行时间和距离
    高德地图驾车路径规划API,获取两地点之间的驾车里程和时间importpandasaspdimportrequestsimportjsondefget_dis_tm(origin,destination):url='https://......
  • JDBC各个类详解_DriverManager_获取数据库连接与JDBC各个类详解_Connection
    JDBC各个类详解_DriverManager_获取数据库连接1.获取数据库连接方法:staticConnectiongetConnection(Stringurl,Stringus......