面向对象的几个概念性问题

using System;

using System.Collections.Generic;

using System.Text;

 

namespace oop

{

    class Person

    {

        public string name;

        public int age;

 

        /**

         * static修饰的字段

         *

         * static修饰的字段,它们属于类,而不属于类的某一个实例,

         * 也就是说,在调用静态字段时,只能通过类名来调用,(Person.sex)

         * 而不能通过类的某一个实例来调用,而不是(Person person = new Person();person.sex)

         * 2.

         * 如果方法被声明为静态的,也是如此

         */

 

        public static string sex;

 

        /**构造方法

         * 特点:

         * 1.与类名相同

         * 2.构造方法一般被声明为public

         * 3.构造方法一般用来初始化成员变量

         * 4.构造方法可以重载

         * 5.构造方法在实例化对象的时候被调用

         * 6.如果类中没有默认构造方法,也没有带参数的构造方法,编译时,将会自动添加一个默认构造方法,

         * 7.如果类中有带参数的构造方法,而没有默认构造方法,则编译器不会再添加默认构造方法,

         * 8.默认构造方法也叫无参构造方法

         */

 

        public Person()

        {

        }

 

        public Person(string name, int age)

        {

            /**

             * this

             * this代表类的实例.

             * 如果一个字段或者方法被声明为static,则不能用this来调用,因为static声明的字段或者方法属于类,

             * this代表的是类的实例(:this.sex是错误的)

             */

            this.name = name;

            this.age = age;

 

        }

        /**

         * 方法的重载

         *

         * 重载的特点:

         * 1.方法名都要相同

         * 2.方法的可以参数不同,返回值可以不同,方法的访问权限可以不同,方法参数不同的几种情况如下:

         *

         * 重载的几种情况:

         * 1.参数的类型不同

         * 2.参数的个数不同()

         * 3.参数的顺序不同(参数的列表不同 在C# ,这种情况没有实际使用价值)

         * 4.返回类型不同

         * 5.访问修饰符不同

         */

 

        public void GetInfo()

        {

            Console.WriteLine("这个是无参的方法");

        }

 

        public void GetInfo(string name)

        {

            Console.WriteLine("姓名是:" + name);

        }

 

        public int GetInfo(int age)

        {

            Console.WriteLine("年龄:" + age);

            return age;

        }

 

        internal void GetInfo(int age, string name)

        {

            Console.WriteLine(" 年龄: " + age + "姓名:" + name);

        }

 

        public void GetInfo(string name, int age)

        {

            Console.WriteLine("姓名:" + name + " 年龄: " + age);

        }

 

        /* static修饰的方法

         *

         * 1.static修饰的方法中,不能用this关键字来调用实例字段

         * 2.static修饰的方法中,也不能直接调用实例字段,如果要调用这些字段,

         *    要先实例化对象( Person p1  =new  Person();p1.age=2;)

         * 3.静态方法中,可以类名调用静态方法

         */

        public static void StaticInfo()

        {

            Console.WriteLine("这个方法是一个静态方法");

        }

        /**

         * 析构函数

         *

         * 特点:

         * 1.析构函数前有一个"~",表明是一个析构函数

         * 2.析构函数的函数名和类名相同

         * 3.一个类只有一个析构函数

         * 4.析构函数没有参数

         * 5.析构函数没有返回值

         * 6.析构函数没有访问修饰符

         * 7.析构函数不能重载

         * 8.析构函数不能实现继承

         * 9.析构函数是用来清理垃圾的(:用来清除不再使用的对象)

         * 10.析构函数不用手动调用,而是由垃圾回收器自动调用

         *

         */

        ~Person()

        {

 

        }

 

    }

    class Program

    {

        static void Main(string[] args)

        {

            Person p = new Person();

 

            p.GetInfo();

            Console.WriteLine("/n");

 

            p.GetInfo("sofie");

            Console.WriteLine("/n");

 

            p.GetInfo("sofie", 21);

            Console.WriteLine("/n");

 

            p.GetInfo(21, "sofie");

            Console.WriteLine("/n");

 

            int a = p.GetInfo(12);

            Console.WriteLine(a);

        }

    }

}

 

 转自:

http://blog.163.com/pengpeng_614/blog/#m=0&t=1&c=fks_087067093083088069093095086095085081086067083087080074

### AndroidPorterDuff.Mode 的用法 `PorterDuff.Mode` 是 Android 提供的一个类,用于定义图像混合模式。它主要用于 `Canvas` 绘图操作以及视图背景颜色或图片的叠加效果处理。通过设置同的 `PorterDuff.Mode` 值,可以实现多种视觉效果。 #### 主要用途 1. **Drawable 颜色过滤**: 使用 `setColorFilter()` 方法为 Drawable 设置颜色滤镜。 2. **Bitmap 合成**: 在 Canvas 上绘制多个 Bitmap 时应用合成模式。 3. **View 背景着色**: 修改 View 的背景颜色并应用特定的效果。 以下是常见的几种 `PorterDuff.Mode` 及其作用: | Mode | 描述 | |-----------------|----------------------------------------------------------------------| | CLEAR | 输出透明像素,忽略源和目标的颜色[^2] | | SRC | 完全显示源图像,忽略目标图像[^2] | | DST | 显示目标图像,忽略源图像[^2] | | SRC_OVER | 默认行为,源图像覆盖在目标图像之上[^2] | | DST_OVER | 目标图像覆盖在源图像之上[^2] | | SRC_IN | 源图像仅保留与目标图像重叠的部分[^2] | | DST_IN | 目标图像仅保留与源图像重叠的部分[^2] | #### 示例代码:Drawable 颜色过滤 下面是一个简单的例子,展示如何使用 `PorterDuff.Mode.SRC_ATOP` 来改变 ImageView 图标的颜色。 ```java ImageView imageView = findViewById(R.id.image_view); Drawable drawable = ContextCompat.getDrawable(this, R.drawable.icon); if (drawable != null) { drawable.setColorFilter(Color.RED, PorterDuff.Mode.SRC_ATOP); // 将图标变为红色 imageView.setImageDrawable(drawable); } ``` #### 示例代码:Button 背景颜色修改 如果希望动态更改 Button 的背景颜色,并应用一种特殊的混合模式,可以这样做: ```java Button button = findViewById(R.id.button); Drawable background = button.getBackground(); if (background != null) { background.setColorFilter(Color.BLUE, PorterDuff.Mode.MULTIPLY); // 应用 Multiply 效果 button.setBackground(background); } ``` 以上代码会将按钮的原始背景颜色与蓝色相乘,从而创建一个新的渐变效果。 --- ### 注意事项 - 同设备可能对某些复杂的 `PorterDuff.Mode` 支持程度同,在实际开发中需注意兼容性测试。 - 如果需要更高级的功能(如自定义 Shader),建议结合 OpenGL 或其他图形库来完成复杂渲染任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值