• 面向对象《一》


    1、类(Class)和对象(Object)是面向对象的核心概念。

    1)类是对一类事物的描述,是抽象的、概念上的定义

    2)对象是实际存在的该类事物的每个个体,因而也称为实例(instance)。

    权限修饰符 class 类名 {
    属性声明;
    方法声明;
    }

    2、权限修饰符

    对于class的权限修饰只可以用public和default(缺省)。

    1)public类可以在任意地方被访问。

    2)default类只可以被同一个包内部的类访问。

    3、类的访问机制

    1)在一个类中的访问机制:类中的方法可以直接访问类中的成员变量。 (例外:static方法访问非static,编译不通过。)

    2)在不同类中的访问机制:先创建要访问类的对象,再用对象访问类中 定义的成员。

    4、内存解析

    成员变量放在堆中,局部变量放在栈中(main方法中定义的变量也属于局部变量)

    5、匿名对象

    我们也可以不定义对象的句柄,而直接调用这个对象的方法。这 样的对象叫做匿名对象。如:new Person().shout();

    使用情况:

    1)如果对一个对象只需要进行一次方法调用,那么就可以使用匿名对象。

    2)我们经常将匿名对象作为实参传递给一个方法调用。

    6、成员变量与局部变量的区别

    7、对象属性默认值

    当一个对象被创建时,会对其中各种类型的成员变量自动进行初始化赋值。除了 基本数据类型之外的变量类型都是引用类型。

    8、方法的重载

    在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数、参数顺序(参数顺序指的是如果两个参数都是int类型,那就不存在不同的参数顺序)或者参数类型不同即可。

    9、可变个数形参

    import java.util.Scanner;
    
    class people{
        int age;
        public void f1(String ... strs) {
            for(int i=0;i<strs.length;++i) {
                System.out.println(strs[i]);
            }
        }
        public void f1(String str) {
            System.out.println("B");
        }
    }
    public class Main {
        public static void swap(int a[],int i,int j) {
            int temp = a[i];
            a[i]=a[j];
            a[j]=temp;
        }
        public static void main(String[] args) {
            
            people p = new people();
            p.f1("1","2");  //如果传一个字符串,那就会调用f1(String str)这个函数
            p.f1("3");
        }
    }
    /*
    1
    2
    B
    */

    JavaSE 5.0 中提供了Varargs(variable number of arguments)机制,允许直接定 义能和多个实参相匹配的形参。从而,可以用一种更简单的方式,来传递个数可 变的实参。

    JDK 5.0以前:采用数组形参来定义方法,传入多个同一类型变量

    public static void test(int a ,String[] books);

    JDK5.0:采用可变个数形参来定义方法,传入多个同一类型变量

    public static void test(int a ,String…books);(这个是5.0后新特性

    1)声明格式:方法名(参数的类型名 ...参数名

    2)可变参数:方法参数部分指定类型的参数个数是可变多个:0个,1个或多个

    3)可变个数形参的方法与同名的方法之间,彼此构成重载

    4)可变参数方法的使用与方法参数部分使用数组是一致的

    5)方法的参数部分有可变形参,需要放在形参声明的最后

    6)在一个方法的形参位置,最多只能声明一个可变个数形参

    public void test(String[] msg){
    System.out.println(“含字符串数组参数的test方法 ");
    }
    public void test1(String book){
    System.out.println(“****与可变形参方法构成重载的test1方法****");
    }
    public void test1(String ... books){
    System.out.println("****形参长度可变的test1方法****");
    }
    public static void main(String[] args){
    TestOverload to = new TestOverload();
    //下面两次调用将执行第二个test方法
    to.test1();
    to.test1("aa" , "bb");
    //下面将执行第一个test方法
    to.test(new String[]{"aa"});
    }

    10、方法参数的值传递

    Java里方法的参数传递方式只有一种:值传递。 即将实际参数值的副本 (复制品)传入方法内,而参数本身不受影响。

    1)形参是基本数据类型:将实参基本数据类型变量的“数据值”传递给形参

    2)形参是引用数据类型:将实参引用数据类型变量的“地址值”传递给形参

    int[] arr = new int[10]; System.out.println(arr);//地址值

    char[] arr1 = new char[10]; System.out.println(arr1); //值

    11、构造器的特征

    1)它具有与类相同的名称

    2)它不声明返回值类型。(与声明为void不同)

    3)不能被static、final、synchronized、abstract、native修饰,不能有 return语句返回值

    语法格式:

    修饰符 类名 (参数列表) {
    初始化语句;
    } 

    12、对成员属性赋值的顺序

    ① 默认初始化 ② 显式初始化 ③ 构造器中初始化 ④ 通过“对象.属性“或“对象.方法”的方式赋值

    13、JavaBean

    public class JavaBean {
    private String name; // 属性一般定义为private
    private int age;
    public JavaBean() {
    }
    public int getAge() {
    return age;
    }
    public void setAge(int a) {
    age = a;
    }
    public String getName() {
    return name;
    }
    public void setName(String n) {
    name = n;
    }
    }

    14、this关键字的使用

    1)它在方法内部使用,即这个方法所属对象的引用;

    2)它在构造器内部使用,表示该构造器正在初始化的对象。

    使用场景:

    1. 在任意方法或构造器内,如果使用当前类的成员变量或成 员方法可以在其前面添加this, 增强程序的阅读性。不过通常我们都习惯省略this。

    2. 当形参与成员变量同名时, 如果在方法内或构造器内需要 使用成员变量,必须添加this来 表明该变量是类的成员变量

    3.使用this访问属性和方法时, 如果在本类中未找到,会从父类中查找

    class Person{ // 定义Person类
    private String name ;
    private int age ;
    public Person(String name,int age){
    this.name = name ; 
    this.age = age ; }
    public void getInfo(){
    System.out.println("姓名:" + name) ;
    this.speak();
    }
    public void speak(){
    System.out.println(“年龄:” + this.age);
    }
    }

    4.this可以作为一个类中构造器相互调用的特殊格式

    class Person{ // 定义Person类
    private String name ;
    private int age ;
    public Person(){ // 无参构造器
    System.out.println("新对象实例化") ;
    }
    public Person(String name){
    this(); // 调用本类中的无参构造器
    this.name = name ;
    }
    public Person(String name,int age){
    this(name) ; // 调用有一个参数的构造器
    this.age = age;
    }
    public String getInfo(){
    return "姓名:" + name + ",年龄:" + age ;
    } 
    }

    注意事项:

    1)可以在类的构造器中使用"this(形参列表)"的方式,调用本类中重载的其 他的构造器!

    2)明确:构造器中不能通过"this(形参列表)"的方式调用自身构造器

    3)"this(形参列表)"必须声明在类的构造器的首行!

    4)在类的一个构造器中,最多只能声明一个"this(形参列表)"

    5)如果一个类中声明了n个构造器,则最多有 n - 1个构造器中使用了 "this(形参列表)"

    15、package关键字

    package语句作为Java源文件的第一条语句,指明该文件中定义的类所在 的包。(若缺省该语句,则指定为无名包)。它的格式为: package 顶层包名.子包名 ;

    16、JDK中一些包的介绍

    1). java.lang----包含一些Java语言的核心类,如String、Math、Integer、 System和 Thread,提供常用功能

    2). java.net----包含执行与网络相关的操作的类和接口。

    3). java.io ----包含能提供多种输入/输出功能的类。

    4). java.util----包含一些实用工具类,如定义系统特性、接口的集合框架类、使用与日 期日历相关的函数。

    5). java.text----包含了一些java格式化相关的类

    6). java.sql----包含了java进行JDBC数据库编程的相关类/接口

    7). java.awt----包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这 些类被用来构建和管理应用程序的图形用户界面(GUI)。

    17、关键字import

    为使用定义在不同包中的Java类,需用import语句来引入指定包层次下所需要的类 或全部类(.*)。import语句告诉编译器到哪里去寻找类。

    语法格式:

    import 包名. 类名;

    注意:

    1). 在源文件中使用import显式的导入指定包下的类或接口

    2). 声明在包的声明和类的声明之间。

    3). 如果需要导入多个类或接口,那么就并列显式多个import语句即可

    4). 举例:可以使用java.util.*的方式,一次性导入util包下所有的类或接口。

    5). 如果导入的类或接口是java.lang包下的,或者是当前包下的,则可以省略此import语句。

    6). 如果在代码中使用不同包下的同名的类。那么就需要使用类的全类名的方式指明调用的 是哪个类。

    7). 如果已经导入java.a包下的类。那么如果需要使用a包的子包下的类的话,仍然需要导入。

    8). import static组合的使用:调用指定类或接口下的静态的属性或方法

  • 相关阅读:
    Parameter Binding in ASP.NET Web API
    Which HTTP methods match up to which CRUD methods?
    ErrorHandling in asp.net web api
    HttpStatusCode
    Autofac Getting Started(默认的构造函数注入)
    Autofac Controlling Scope and Lifetime
    luvit 被忽视的lua 高性能框架(仿nodejs)
    undefined与null的区别
    VsCode中使用Emmet神器快速编写HTML代码
    字符串匹配---KMP算法
  • 原文地址:https://www.cnblogs.com/kongbursi-2292702937/p/14706829.html
Copyright © 2020-2023  润新知