• 面向对象1


    一、对象和类

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

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

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

    public class Stxtu{
    	int age;
    	int height;
    	String name;
    	computer comp;
    	
    	void study() {
    		System.out.println("我叫"+name+"
    "+"我今年"+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);
        }
    }
    
  • 相关阅读:
    打怪(CDQ分治+斜率优化)
    中缀表达式求值
    马拉车(manacher)算法
    后缀数组的求法及应用
    【最小生成树】藏宝图(prim)
    【最小生成树】prim算法
    [最近公共祖先]最近公共祖先(LCA)
    [思维]Supreme Number
    [模拟] Lattice's basics in digital electronics(2018沈阳赛区网络预赛)
    【搜索+思维】Distinctive Character
  • 原文地址:https://www.cnblogs.com/zh93/p/12534123.html
Copyright © 2020-2023  润新知