面向对象1

一、对象和类

1.对象是具体的事物;类是对对象的抽象;

2.类可以看成一对象的模板,对象可以看成该类的一个具体实例。

3.类是用于描述同一类型的对象的一个抽象概念,类中定义了这一类对象所应具有的共同的属性、方法。

public class Stxtu{
	int age;
	int height;
	String name;
	computer comp;
	
	void study() {
		System.out.println("我叫"+name+"\n"+"我今年"+age);
	}
	void play() {
		System.out.println("我的电脑是:"+comp.brand);
	}
	public static void main(String[] args) {
		Stxtu a=new Stxtu();
		a.age=18;
	    a.height=180;
		a.name="zh";
		computer b=new computer();
		b.brand="麦本本";
		a.comp=b;
	a.play();
	a.study();
		
	}
}
class computer{
	String brand;
}

二、构造方法(对象初始化)

1.构造方法及重载

public class User{
int id;
int age;
String name;
String pwd;
public User(){
	 
}
 User(int id,String name) {
	 super();
	 this.id=id;
	 this.name=name;
	
 }
 User(int id,String name,int age){
	
	 this(id,name);
	 this.age=age;
	 
 }
 User(int id,String name,String pwd){
	 this(id,name);
	 this.pwd=pwd;
 }
 public static void main(String[] args) {
User a=new User();
	 User a1=new User(1,"zh");
	 User a2=new User(3,"zh","dhshc");
	 User a3=new User(4,"ff",334);
	 System.out.println(a1.name);
	 System.out.printf("%s%s",a3.name,a3.age);
}
}



2.关键字

静态方法中不能对非静态字段进行静态引用

非静态方法中可以调用静态方法跟变量

3.static 初始化块(对象初始化)

public class User3 {
    int id;        //id
    String name;   //账户名
    String pwd;   //密码
    static String company; //公司名称
    static {
        System.out.println("执行类的初始化工作");
        company = "北京尚学堂";
        printCompany();
    }  
    public static void printCompany(){
        System.out.println(company);
    }  
    public static void main(String[] args) {
        User3  u3 = new User3();
    }
}

4.import导入

 1. Java会默认导入java.lang包下所有的类,因此这些类我们可以直接使用。

 2. 如果导入两个同名的类,只能用包名+类名来显示调用相关类: 

java.util.Date date = new java.util.Date();

【示例4-15】导入同名类的处理  

import java.sql.Date;
import java.util.*;//导入该包下所有的类。会降低编译速度,但不会降低运行速度。
 
public class Test{
    public static void main(String[] args) {
        //这里指的是java.sql.Date
        Date now; 
        //java.util.Date因为和java.sql.Date类同名,需要完整路径
        java.util.Date  now2 = new java.util.Date();
        System.out.println(now2);      
        //java.util包的非同名类不需要完整路径
        Scanner input = new Scanner(System.in);    
    }
}

5.静态导入

静态导入用于导入指定类的静态属性,这样我们可以直接使用静态属性。

 //以下两种静态导入的方式二选一即可
import static java.lang.Math.*;//导入Math类的所有静态属性
import static java.lang.Math.PI;//导入Math类的PI属性
 
public class Test2{
    public static void main(String [] args){
        System.out.println(PI);
        System.out.println(random());
    }
}

6.package

通过package实现对类的管理,package的使用有两个要点:

1. 通常是类的第一句非注释性语句。

2. 包名:域名倒着写即可,再加上模块名,便于内部管理类。

4-3 JDK中的主要包
Java****中的常用包 说明
java.lang 包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能。
java.awt 包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。
java.net 包含执行与网络相关的操作的类。
java.io 包含能提供多种输入/输出功能的类。
java.util 包含一些实用工具类,如定义系统特性、使用与日期日历相关的函数。

7.java参数传值机制

基本数据类型参数的传值

  传递的是值的副本。 副本改变不会影响原件。

· 引用类型参数的传值

  传递的是值的副本。但是引用类型指的是“对象的地址”。因此,副本和原参数都指向了同一个“地址”,改变“副本指向地址对象的值,也意味着原参数指向对象的值也发生了改变”。

/**
 * 测试参数传值机制
 * @author 高淇
 *
 */
public class User4 {
    int id;        //id
    String name;   //账户名
    String pwd;   //密码
       
    public User4(int id, String name) {
        this.id = id;
        this.name = name;
    }
      
    public   void   testParameterTransfer01(User4  u){
        u.name="高小八";
    }
     
    public   void   testParameterTransfer02(User4  u){
        u  =  new  User4(200,"高三");
    }
      
    public static void main(String[] args) {
        User4   u1  =  new User4(100, "高小七");
         
        u1.testParameterTransfer01(u1); 
        System.out.println(u1.name);
 
        u1.testParameterTransfer02(u1);
        System.out.println(u1.name);
    }
}
posted @ 2020-03-20 19:28  Zh'Blog  阅读(147)  评论(0编辑  收藏  举报