• 4.构造器,this,修饰符详解


    构造器:

    构造器也叫构造方法,无返回值。非构造方法必须要有返回类型

    主要作用:完成对象的初始化,创造对象时,自动调用构造器初始化对象

    即使没有显示地使用static关键字,构造器实际上也是静态方法

    JAVA中静态的东西都是属于类的,为类服务,构造函数是为了初始化对象,为对象服务。构造函数是用来生成实例,既然是实例就不是static的。这两者是相互矛盾的

    1. public class Test1 {
    2. public static void main(String[] args) {
    3. Person person = new Person("小红",18);
    4. System.out.println(person.name+" "+person.age);
    5. }
    6. }
    7. class Person{
    8. String name;
    9. int age;
    10. public Person(){
    11. }
    12. public Person(String sname,int sage){
    13. name = sname;
    14. age = sage;
    15. }
    16. public static void run(){
    17. System.out.println("跑");
    18. }
    19. }

     this

    this.谁就是谁的意思

    1. public class Demo1 {
    2. public static void main(String[] args) {
    3. Person person = new Person("小红",18);
    4. System.out.println(person.name+" "+person.age);
    5. }
    6. }
    7. class Person{
    8. String name;
    9. int age;
    10. public Person(String name,int age){
    11. this.name = name;
    12. this.age = age;
    13. }
    14. public static void run(){
    15. System.out.println("跑");
    16. }
    17. }

    hashCode

    对象. hashCode,显示“地址”

    1. public class Demo1 {
    2. public static void main(String[] args) {
    3. Person person = new Person();
    4. System.out.println(person.name+" "+person.age);
    5. }
    6. }
    7. class Person{
    8. String name;
    9. int age;
    10. public Person(){
    11. this("hong",12);//访问构造器的这句话,必须要放在第一句话。
    12. //不能用在普通方法种
    13. }
    14. // public void f1(){
    15. // this("",22);
    16. // }
    17. public Person(String name,int age){
    18. this.name = name;
    19. this.age = age;
    20. }
    21. }

    Random

    生成随机数方法

    import java.util.Random; public class Demo1 { public static void main(String[] args) { Person person = new Person(); person.m1(); System.out.println(person.random.nextInt()); } } class Person{ Random random = new Random(); int a = random.nextInt(3);//0-2随机数 public void m1(){ System.out.println(a); } }

    包的使用(介绍一下就行)

    访问修饰符

    default就是默认修饰符,没有修饰符

    静态方法和实例方法的区别

    (1)静态方法通过“类名.方法名”,也可以通过对象名.方法名。

    (所以调用静态方法无需创建对象)

    静态方法不允许访问类的非静态成员(包括成员的变量和方法),因此是通过类调用的,没有对象的概念,this->data不能用!!!

    (2) 但是实例方法只能通过对象名.方法名

    同类

    1. package Day;
    2. //同类都可以
    3. public class Demo1 {
    4. public int a = 1;
    5. protected int b = 2;
    6. int c = 3;
    7. private int d = 4;
    8. public void m1() {
    9. System.out.println(a);
    10. System.out.println(b);
    11. System.out.println(c);
    12. System.out.println(d);
    13. }
    14. public static void main(String[] args) {
    15. // System.out.println(a);
    16. Demo1 demo1 = new Demo1();
    17. demo1.m1();
    18. }
    19. }

    同包

    1. package Day;
    2. //同一包下
    3. public class Demo2 {
    4. public static void main(String[] args) {
    5. Demo1 hhh = new Demo1();
    6. System.out.println(hhh.a);
    7. System.out.println(hhh.b);
    8. System.out.println(hhh.c);
    9. // System.out.println(hhh.d);
    10. }
    11. }

    子类

    先暂时跳过哟,与继承有关

    不同包

    1. package Day2;
    2. import Day.Demo1;
    3. public class Demo3 {
    4. public static void main(String[] args) {
    5. Demo1 demo1 = new Demo1();
    6. System.out.println(demo1.a);
    7. // System.out.println(demo1.b);
    8. }
    9. }

    方法和属性修饰符一样用

  • 相关阅读:
    华为od 面试题及流程 (前后端)
    【笔记】【开发方案】APN 配置参数 bitmask 数据转换(Android & KaiOS)
    LinkedBlockingDeque
    HarmonyOS 高级特性
    可变参数函数
    四、LockSupport与线程中断
    springboot运维篇--springboot项目打包
    解决SpringBoot3整合Druid的兼容性问题
    阿里最新秋招面经,腾讯/美团/字节 Java中高级面试题
    【rtp-benchmarks】读取本地文件基于uvgRtp实现多线程发送
  • 原文地址:https://blog.csdn.net/m0_61983575/article/details/127889393